2010-11-06 29 views
1

嘿,我试图通过编程方式将选择器添加到导航栏中的按钮,而我似乎无法找出它为什么不起作用。这里是我得到的代码:以编程方式将选择器添加到导航栏按钮

[self.navigationController.navigationItem.rightBarButtonItem setAction:@selector(showWithLabel)]; 

我是否正确地做这件事,还有什么我该做的?

编辑:我发现按钮是nil,我不明白,因为它连接到rightBarButton插座。

编辑(再次):我发现navigationitem是零,任何想法是什么问题呢?

+0

检查rightBarButtonItem是否是零。 – jithinroy 2010-11-06 13:56:46

+0

这确实是零,我不知道为什么它连接rightbarbutton插座? – 2010-11-06 14:10:49

+0

不应该是'[self.navigationItem.rightBarButtonItem ...'? – 2012-05-01 15:29:07

回答

0

尝试添加冒号你选择的名字后,像这样:

[self.navigationController.navigationItem.rightBarButtonItem setAction:@selector(showWithLabel:)]; 
+0

没有工作对不起:S – 2010-11-06 14:09:06

2

我使用的是这样做的,并能正常工作

 
    presetButton = [[UIButton alloc] initWithFrame:framePresetButton]; 
    UIImage *presetBtnBG = [[[UIImage imageNamed:@"segment_tools.png"] stretchableImageWithLeftCapWidth:12.0 topCapHeight:0.0] retain]; 


    [presetButton setImage:presetBtnBG forState:UIControlStateNormal]; 

    presetButtonItem = [[UIBarButtonItem alloc] initWithCustomView:presetButton]; 
    [presetButton addTarget:self action:@selector(loadPreset) forControlEvents:UIControlEventTouchUpInside]; 

    self.navigationItem.rightBarButtonItem = presetButtonItem; 
+0

是的,但我已经在IB获得了按钮。 – 2010-11-06 14:34:18

0

你应该也可以设定将收到的目标行动(我想你会使用 '自我'):

[self.navigationController.navigationItem.rightBarButtonItem setAction:@selector(showWithLabel)]; 
[self.navigationController.navigationItem.rightBarButtonItem setTarget:self]; 
1

所以你说self.navigationController.navigationItem.rightBarButtonItemnil,但rightBarButtonItem连接IB。

有两个原因,这可能是:

  1. 没有装入你的笔尖呢。 (从我对UIViewController知之甚少,这似乎不大可能。)
  2. navigationItem,navigationControllerselfnil

请记住,属性访问表达式实际上是消息表达式。如果,例如self.navigationControllernil,那么发送它navigationItem消息将返回nil。如果这样或那样,self.navigationController.navigationItemnil,那么请求它的rightBarButtonItem将返回nil

检查每一个这些分以下词组selfself.navigationController,并self.navigationController.navigationItem -and看看哪一个是nil。然后,修复那个。

+0

好吧,我发现导航项目是零。 – 2010-11-07 11:16:55

0

刚刚尝试编程在viewDidLoad方法来创建rightBarButtonItem:

UIBarButtonItem *rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(editEventQuestion)]; 
self.navigationItem.rightBarButtonItem = rightBarButtonItem; 
[rightBarButtonItem release]; 
相关问题