2013-07-29 48 views
0

我已經建造這樣的方法:如何直接調用tableView方法?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

//some table related stuff 

} 

但是我不能叫這個,所以我基本上覆制和粘貼的整體功能,並更名爲:

- (void)jumpCountry: (NSIndexPath *)indexPath { 
//some table related stuff 
} 

,並通過調用此方法:

[self jumpCountry:countryIndex];

但是我的類看起來難看(而不是首選),因爲它已經拿到了SAM兩種方法。那麼,我怎樣才能直接調用初始方法(我知道它被分配給一個調用該方法的按鈕)。我正在使用iOS6.1。基本上,我想直接調用的原因是我有另一個線程偵聽通知(來自位置服務),一旦收到通知,應該更改表視圖。通知本身已經在搜索NSIndexPath,所以不會有任何問題。

+0

你爲什麼不能叫'的tableView:didSelectRowAtIndexPath方法:'? – Wain

+0

編譯器提供了一個錯誤「使用未聲明的標識符didSelectRowAtIndexPath'」 –

+0

我不明白你的問題,你能說清楚嗎?爲什麼不能從'didSelectRowAtIndexPath'調用'[self jumpCountry:countryIndex];',而不是重複代碼? –

回答

1

你可以把

[self jumpCountry:countryIndex]; 

給你的方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
+0

這不是我想要做的。我想從類的內部或外部調用didSelectRowAtIndexPath方法 –

+0

? –

+0

裏面的類 –

0
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

這種方法從UITableViewDelegate協議表視圖的委託方法和它得到調用時,用戶在選擇一行UITableView。你不應該由你自己來調用這個方法。

而不是你可以創建你的方法,做任何你想做的事情,並在viewDidLoad或任何方法調用它。

+0

我知道我不應該這樣稱呼它,但我怎麼稱呼它呢? –

+0

你想在didSelectRowAtIndexPath方法中做什麼可以請你解釋一下@SarpKaya? – Suryakant

+0

只要你清楚自己在做什麼以及爲什麼(並且添加評論,以便人們知道未來),就沒有一條規則說你不應該這麼稱呼它。 – Wain

0

要調用編程使用

[tabelView selectRowAtIndexPath:scrollIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 

這裏scrollIndexPath是行的indexpath來選擇

爲了創建indexpath

NSIndexPath *scrollIndexPath = [NSIndexPath indexPathForRow:0 inSection:0]; 
+0

@sarp Kaya:這會試試這個 –

相關問題