我希望我的UITableView的行爲與聯繫人編輯器中的表格類似,即用戶應點擊編輯,並在每個部分的底部顯示「添加新類別」行。在UITableView中使用插入行
我使用下面的代碼來做到這一點,但問題是沒有平滑的過渡,因爲有聯繫人。相反,新的行突然出現。我如何獲得動畫?
另外,如何響應點擊「添加新類別」行?該行在我當前的實現中不可點擊。
用戶開始編輯時是否需要重新加載數據?我這樣做是因爲否則插入行從不繪製。
謝謝。
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated:animated];
[self.tableView setEditing:editing animated:animated];
[tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)_tableView numberOfRowsInSection:(NSInteger)section {
// ...
if(self.tableView.editing)
return 1 + rowCount;
}
- (UITableViewCell *)tableView:(UITableView *)_tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// .....
NSArray* items = ...;
if(indexPath.row >= [items count]) {
cell.textLabel.text = @"add new category";
}
// ...
return cell;
}
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {
NSArray* items = ...;
if(indexPath.row == [items count])
return UITableViewCellEditingStyleInsert;
return UITableViewCellEditingStyleDelete;
}
這是非常有益的(有答案一起,下同)。只是一個小的不一致性 - 與'tableView:cellForRowAtIndexPath:'中的行數比較'使用'> ='而'tableView:editingStyleForRowAtIndexPath:'中的使用'=='。沒什麼大不了的,但是它們之間應該是一致的。 '> ='將覆蓋任何意外的雙重添加插入行,而'=='將通過拋出一個異常來解決任何可能導致這種情況的代碼錯誤。 – 2013-01-21 20:38:15