【问题标题】:UIBarButton initWithTitleUIBarButton initWithTitle
【发布时间】:2012-07-06 02:42:52
【问题描述】:

我有一个拆分视图应用程序。在纵向模式下,菜单在单击后会消失。为了解决这个问题,我添加了一个新按钮,它只是用来显示菜单:

- (void)viewDidLoad {
    [super viewDidLoad];

    // FORM LIST button was dissapearing, this adds it back everytime
    UIBarButtonItem *btnMenu = [[UIBarButtonItem alloc]initWithTitle:@"Forms List" style:UIBarButtonItemStyleBordered target:self action:@selector(showMenu:)];
    self.navigationItem.leftBarButtonItem = btnMenu;

}

每次我加载该视图时都会出现。我的问题是我收到一个错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[DetailViewController showMenu:]: unrecognized selector sent to instance 0x9d58810

我很确定问题出在这一行:

UIBarButtonItem *btnMenu = [[UIBarButtonItem alloc]initWithTitle:@"Forms List" style:UIBarButtonItemStyleBordered target:self action:@selector(showMenu:)];

我的问题是: (1) showMenu: 合适的方法吗? (2) 目标应该是什么?

谢谢。

【问题讨论】:

  • 您的问题是您在某处调用 showMenu: 在 DetailViewController 但此 DetailViewController 没有 showMenu: 方法
  • 我没有在其他任何地方明确调用 showMenu。我以为这是一种内置方法?首先我对菜单的显示方式有点困惑
  • 如果你没有 showMenu: 方法你发现你的问题;)

标签: objective-c uisplitviewcontroller uibarbuttonitem


【解决方案1】:

确保你的方法有参数

- (void)showMenu:(id)sender
- (IBAction)showMenu:(id)sender

如果它没有参数,那么如果它只是 -(void)showMenu ,那么你应该从 @selector(showMenu:) 中删除 :(冒号)。

当您从实际视图(即Main View)调用showMenu 时,应该在Main View 的某处声明showMenu 方法。

【讨论】:

    【解决方案2】:

    感谢大家,我发现我的代码存在多个问题。

    (1) 我认为 showMenu 是一个内置函数,并没有在我的程序的任何地方声明它。

    (2) 我不知道目标或行动是如何工作的。

    谢谢伙计们(女孩们?)!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多