添加导致错误的 UIBarButtonItem 数组
Posted
技术标签:
【中文标题】添加导致错误的 UIBarButtonItem 数组【英文标题】:Adding an array of UIBarButtonItem resulting in an Error 【发布时间】:2015-03-10 15:46:25 【问题描述】:由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'-[__NSArrayI isSystemItem]: 无法识别的选择器发送到实例 0x7fa5bbd726f0'
我关注了他的solution here,显然我没有做任何错误。我正在做的是 - 在我的导航栏右侧添加两个按钮(栏按钮)。
UIBarButtonItem *notificationButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Notification.png"]
style:UIBarButtonItemStylePlain target:self action:@selector(notificationAction)];
UIBarButtonItem *searchButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"search"]
style:UIBarButtonItemStylePlain target:self action:@selector(searchAction)];
NSArray *arrNavigationButtons = [NSArray arrayWithObjects:notificationButtonItem,searchButtonItem, nil];
// warning here - Incompatible pointer type.
self.navigationItem.rightBarButtonItem = arrNavigationButtons;
【问题讨论】:
你得到的 2 个答案告诉你问题是什么以及如何解决它。你应该得到一个编译器警告。警告是你的朋友。密切关注他们。 @DuncanC 。那是一个愚蠢的错误。下次我会更好。谢谢。 【参考方案1】:将最后一行更改为rightBarButtonItems
。注意末尾的 s。
【讨论】:
【参考方案2】:self.navigationItem.rightBarButtonItem 是单个 ButtonItem 并且您将 NSArray 传递给它,这是无效的调用。要传递 NavigationBarButtons,您需要调用正确的函数。如果你调用它,我认为你会收到不兼容的指针类型的警告。只需将您的代码更改为:
self.navigationItem.rightBarButtonItems = arrNavigationButtons;
【讨论】:
以上是关于添加导致错误的 UIBarButtonItem 数组的主要内容,如果未能解决你的问题,请参考以下文章
WEPopoverController presentPopoverFromBarButtonItem 导致指定的 UIBarButtonItem 消失
从 UIBarButtonItem 触发 textFieldShouldReturn
在 UIToolbar 中的 UIBarButtonItem 上更改 tintColor 会导致按钮消失并从左侧动画化
IOS UIBarButtonItem 工作正常,而 UIButton 导致 Unrecognized Selector Sent to Instance