2011-04-05 34 views
0

的第一行,我有一個UITable通過模型的核心數據佔滿了,我不希望用戶可以刪除該表的第一行,所以我這樣做:不要刪除UITable

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

if (editingStyle == UITableViewCellEditingStyleDelete) { 
    if (indexPath.row != 0) { 
     NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
     [context deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]; 
     [self saveContext]; 
    } 
    // Delete the managed object for the given index path 

} 

}

我用這個if(indexPath.row!= 0),對嗎?我嘗試,如果我推編輯模式下刪除不會發生什麼......這是正確的還是有更好的辦法?

回答

1

此代碼將工作,但我認爲這是糟糕的UI設計。我不認爲用戶會明白他們不能刪除第一行。更有可能的是,他們會認爲應用程序未能進入編輯模式。

接口語法教導用戶假定所有行都是相同的並且具有相同的行爲。有一個特殊的行迫使用戶停下來,並在他們可以預測選擇編輯會產生什麼效果之前,先考慮他們選擇了哪一行。讓用戶不得不跟蹤應用程序狀態,就像這是糟糕的UI設計。

如果你對第一行有特別的看法,你可能想把這個數據/函數放在tableview的頭部而不是行中。

+0

非常感謝你......你有一個很好的教程來做到這一點?......在第一行的標題? – Piero 2011-04-05 19:46:53