2010-11-06 73 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]; 
相關問題