2011-05-05 50 views
-2

我在不同的選項卡中使用相同的uiviewcontroller的實例。 viewcontroller中有一個uitableview。 在firstviewController實例中,我不想編輯uitableview。 在第二個我使用編輯模式的tableview。 這就是爲什麼我要顯示或隱藏這個方法:是否有任何if語句顯示/隱藏objC中的方法?

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 

是有可能使一個if語句是這樣的:

#if (editingOK) 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
....some codes 
} 
#endif 

編輯OK是一個布爾屬性。

如果你問我爲什麼要這樣做,因爲如果用戶在單元格上滑動,它會顯示刪除按鈕。 我只是想要它,如果我editOK =是。

+2

我認爲你的語法會導致混淆。 #if - #endif結構是編譯時語法,因此對於動態編程沒有用處。 C和朋友使用「if(test){do_this_if_true();} else {do_this_is_false();}」排序。 – 2011-05-05 22:07:22

回答

1

#if/#endif語法用於條件編譯:它允許您根據構建配置在編譯時間上修改程序。閱讀「C預處理器」瞭解更多信息。

如果你是,正如你所說,使用同一個對象實例不同UITableViews的代表,你必須有一些方法來確定你正在處理哪個表。

你需要做的是實現一個額外的方法:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 

調用該方法,當用戶掃描的單元格,你可以決定是否刪除按鈕應該出現與否,然後返回相應的UITableViewCellEditingStyle不變。

1

通過調用UITableViewController的setEditing方法來控制可編輯性嗎?所以你可以根據你是否要啓用編輯來設置,不用這個#ifdef ugliness。