2011-07-14 128 views
0

以我的iPhone應用程序,我有以下的方法刪除從UITableView中的細胞 - 錯誤

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return [tableArrays count]; 
} 

注意tableArrays是一個類變量(NSMutableArrays的一個NSMutableArray一個UITableView - 代表一個的NSMutableArray在每個節我的tableView)。現在,UITableView的支持編輯和我有以下方法

- (void)tableView:(UITableView *)theTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    ...some code... 

    NSLog(@"tableArrays count is %i",[tableArrays count]); 
    [tableArrays removeObjectAtIndex:indexPath.section]; 
    NSLog(@"tableArrays is now %@",tableArrays); 
    NSLog(@"tableArrays count is now %i",[tableArrays count]); 


    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

} 

所以,我運行應用程序,我有我的表視圖兩個部分。行刪除工作正常除了當我刪除一節中的最後一行。當我刪除第1節的最後一排,我看到下面的輸出,按照上面的代碼:

tableArrays count is 2 
tableArrays is now (("Blah1","Blah2")) 
tableArrays count is now 1 

所以很明顯,我的tableArrays數減少一個,但我得到了以下錯誤:

...The number of sections contained in the tableView after the update (1) must be qual to the number of sections contained in the table view before the update (2), plus or minus the number of sections inserted or dleted (0 inserted, 0 deleted).' 

回答

1

我想在-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;你正在返回的對象的總數,你想只顯示一個部分。

嘗試在此方法中返回一個。

您還應該在-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;中返回[tableArrays count]

它應該像這樣工作得更好。 section又是什麼

[tableArrays removeObjectAtIndex:section];?你的意思是indexPath.section

感謝評論,所以返回部分數的方法是正確的,但你這樣做是爲了刪除一個單元格。

NSLog(@"tableArrays count is %i",[tableArrays count]); 
NSMutableArray *sectionArray = [tableArrays objectAtIndex:indexPath.section]; 
[sectionArray removeObjectAtIndex:indexPath.row]; 
//[tableArrays removeObjectAtIndex:indexPath.section]; 
NSLog(@"tableArrays is now %@",tableArrays); 
NSLog(@"tableArrays count is now %i",[tableArrays count]); 
+0

請參閱修訂。注意tableArrays是NSMutableArrays的NSMutableArray(代表我的tableView的每個部分的一個NSMutableArray) – CodeGuy

+0

更新了我的回答 – 2011-07-14 14:55:21

+0

你解決了嗎? – 2011-07-14 15:34:52

1

的關鍵是使用

[tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationFade]; 

,當你試圖刪除的最後一排的部分。