2012-02-01 47 views
1

我有一個方法addClicked,當點擊導航欄上的按鈕時被調用。我想稍後在代碼中調用它,而不必單擊按鈕。調用這個方法的語法是什麼?如何從ViewController調用按鈕方法?

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] 
              initWithBarButtonSystemItem:UIBarButtonSystemItemAdd 
              target:self action:@selector(add_Clicked:)]; 

功能是調用看起來是這樣的:

- (void) add_Clicked:(id)sender { 

我想:

[self add_Clicked:]; 

[add_Clicked:]; 

[self add_Clicked: self]; 

最後的作品,但我不知道爲什麼。有人可以提供一個鏈接到文檔,將解釋這是如何工作的?

回答

1

您必須爲發件人傳遞一些信息。這就是上一個作品的原因。

嘗試[自add_Clicked:無]

+0

謝謝你解釋。我現在有另一個問題,因爲我試圖從後面的AddQuoteViewController類訪問第一個RootViewController類中的變量集,並且似乎無法訪問該變量。我在這裏發佈的問題[鏈接](http://stackoverflow.com/questions/9104327/how-do-i-pass-object-from-one-viewcontroller-to-another-viewcontroller),如果你可以看看在我做錯了什麼。 – jroyce 2012-02-01 22:28:55

1

的最後一部作品,因爲你加入當前類爲目標「的目標:自我」,但目標是(ID),所以發送者可以在理論上,任何對象。

+0

您在add_Clicked:方法中不使用發件人的事實是使解決方案成功的原因。如果您在呼叫中使用發件人,那麼傳遞null或self可能會崩潰。 – nycynik 2012-02-01 21:29:04

1

建議的另一種替代方法取決於你的做法是向類中添加另一種方法,並使用稱爲形式回調的方法來調用它。

- (void) add_Clicked:(id)sender { 
    [self goAddSomething]; 
} 


- (void) goAddSomething { 
    /* add the code here to handle add. */ 
} 

然後在你的代碼的另一部分,你可以調用[self goAddSomething];而不必使用零。

相關問題