2011-06-05 108 views
8

我如何在@selector中爲我的代碼傳遞參數?如何在@selector中傳遞參數?

[thisIconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside]; 

-(void)changeIconState:(UITableViewCell*)thisCell 
{ 
    //do something 
} 
+0

Theres一種方式,你可以調用一個選擇器與多個參數,這個問題已經得到解答...你可以閱讀它[這裏](http://stackoverflow.com/questions/1018195/objective-c-calling-選擇器與多個參數) – iruleonu 2011-06-05 12:18:51

回答

6

首先,冒號是選擇器的一部分:@selector(changeIconState:)

其次,動作是採用一組特定參數的方法 - 您不能僅將任何方法用作動作。通常情況下,動作如下所示:

- (void)myAction:(id)sender; 

其中sender是發送操作的對象的指針。在您的代碼中,當點擊thisIconButton時,該按鈕將作爲發件人傳遞。

+0

我在每個單元格上都有一個按鈕。我怎樣才能做到這一點? – Zhen 2011-06-05 12:31:41

+0

取決於你如何設置。您可以檢查按鈕的超級視圖來確定它所在的單元格。或者,您可以使按鈕定位到單元格而不是視圖控制器。然後單元格的動作可以調用你的'-changeIconState:'方法。 – Caleb 2011-06-05 12:40:42

1

如果你想在單元格該按鈕所屬,它使用button.superview.superview但我不認爲你可以改變的控制目標的事件方法的參數得到。

0

嘗試通過選擇器發送數據的最常見原因之一是在UITableViewCell中使用自定義按鈕時。

Matthias Bauch提供了一個極好的代碼示例,介紹如何通過在相關帖子中查找發件人的單元格來獲取indexPath。見https://stackoverflow.com/a/5690329/654870