一个 BarButtonItem 的多个操作
Posted
技术标签:
【中文标题】一个 BarButtonItem 的多个操作【英文标题】:Multiple actions for the one BarButtonItem 【发布时间】:2014-03-26 11:37:04 【问题描述】:我正在尝试将两个操作分配给一个 BarButtonItem,但我的语法 (bad receiver type 'NSInteger' aka 'long')
有问题,我无法编译我的应用程序。这是错误的代码:
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(myAction1)];
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(myAction2)];
我正在使用Xcode 5.1
,我的目标是ios 7.0.
你能帮帮我吗?提前谢谢你。
【问题讨论】:
此方法不存在。调用将调用Action1
和Action2
的方法
你想用两种方法做什么?
为什么要调用 2 个动作?它根本不可能。您可以将第二个动作作为第一个动作中的方法调用。或使用 nsnotifications 通知任何已注册通知的人
这些答案对您有帮助吗?
嗨,JoeFryer,对我有帮助的答案如下所示。
【参考方案1】:
您不能将两个操作分配给 BarButtonItem
。
您可以在selector
方法中调用第二个操作。
或者您可以简单地删除以前的目标并在运行时有条件地添加新的target action
。
【讨论】:
【参考方案2】:您不能向UIBarButtonItem
添加多个目标/操作。
您可以像这样添加一个带有一个目标/动作的条形按钮项:
UIBarButtonItem *myBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(myAction1)];
self.navigationItem.leftBarButtonItem = myBarButtonItem;
然后你需要做一些事情,比如从指定的方法中调用第二种方法,或者任何适合你情况的方法。
【讨论】:
【参考方案3】:这真的是你的代码吗?
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(myAction2)];
接收器不是不见了吗?
UIBarButtonItem 也只能有一个目标,如果您想要调用两个动作,请创建第三个调用另外两个的动作
- (IBAction)myAction3:(id)sender
[self myAction1:sender];
[self myAction2:sender];
【讨论】:
以上是关于一个 BarButtonItem 的多个操作的主要内容,如果未能解决你的问题,请参考以下文章
如何在 swift 3 中以编程方式为 barButtonItem 设置操作?