UIBarButton initWithTitle

时间:2012-07-05 18:28:50

标签: objective-c uisplitviewcontroller uibarbuttonitem

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

- (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)目标应该是什么?

感谢。

2 个答案:

答案 0 :(得分:0)

确保您的方法有参数

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

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

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

答案 1 :(得分:0)

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

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

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

谢谢你们(女孩们?)!