2013-09-26 64 views
0

我想清除UITableView。首先,我試圖用[self.tableView reloadData]; listOfPosts = nil清除,但tableView仍然顯示10行。然後我試圖逐行刪除,但結果是一樣的。無法刪除行 - UITableView iOS 7

[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 

NSLog(@"Number of sections: %i", [self.tableView numberOfSections]); // => 1 
NSLog(@"Number of rows in section 0: %i", [self.tableView numberOfRowsInSection:0]); // => 10 

[self.tableView beginUpdates]; 
NSMutableArray *rowsToDelete = [[NSMutableArray alloc] init]; 
int nPosts = [self.tableView numberOfRowsInSection:0]; 
for (int i = 0; i < nPosts; i++) { 
    [rowsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
} 
currentPostList = nil; 
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithArray:rowsToDelete] withRowAnimation:UITableViewRowAnimationNone];       
[self.tableView endUpdates]; 
[self.tableView reloadData]; 

NSLog(@"Rows after endUpdates: %i", [self.tableView numberOfRowsInSection:0]); // => 0 
NSLog(@"Visible rows: %i", [[self.tableView visibleCells] count]); // => 0 

// But the tableView still show 10 rows 

}]; 

PD:我使用一個UITableViewController所以self.tableView自動生成

(我爲我的英語不好對不起)

+0

您不應該*需要* *動畫您的更改*和*重新加載表。如果你刪除一個或另一個(但不是兩個),會發生什麼? –

+0

如果我評論'[self.tableView reloadData]'我得到相同的結果。與'[self.tableView beginUpdates] ... [self.tableView endUpdates]' – masipcat

+0

相同想知道這是否可能歸結爲與'currentPostList'的塊相關的惡意。如果你把塊中的所有代碼放入一個新的方法(比如'-clearTable'),並從塊中調用它('[self clearTable]')? –

回答

0

你有沒有試圖改變進入值方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

這將改變您的表視圖中的行數。重新加載表格將不會執行任何操作,除非您的模型已更改此方法指定的值。

+0

這是我的代碼: ' - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return [currentPostList count]; }' – masipcat

+0

你沒有任何默認的原型嗎?您是否嘗試加載沒有任何數據的表格視圖?在你做任何事情之前,看看它是否還有這10個電池? – Jonathan

+0

我作出這樣的: 1.從服務器 2.在TableView中 3.此信息。如果用戶點擊一個「清除按鈕」,我要清除的行 4.獲取信息表格服務器 – masipcat