【问题标题】:Adding an array of UIBarButtonItem resulting in an Error添加导致错误的 UIBarButtonItem 数组
【发布时间】: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 。那是一个愚蠢的错误。下次我会更好。谢谢。

标签: ios objective-c xcode uinavigationcontroller uibarbuttonitem


【解决方案1】:

将最后一行更改为rightBarButtonItems。注意末尾的 s。

【讨论】:

    【解决方案2】:

    self.navigationItem.rightBarButtonItem 是单个 ButtonItem 并且您将 NSArray 传递给它,这是无效的调用。要传递 NavigationBarButtons,您需要调用正确的函数。如果你调用它,我认为你会收到不兼容的指针类型的警告。只需将您的代码更改为:

    self.navigationItem.rightBarButtonItems = arrNavigationButtons;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-07
      • 2023-01-12
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多