我有一個tableview有幾個部分。我希望能夠將行從一個部分移動到另一個部分,並在沒有行時刪除部分。我試圖通過moveRowAtIndexPath來做到這一點,但我有代碼不起作用,並引發NSRangeException異常。moveRowAtIndexPath:如何刪除一節最後一行被移動到另一節
下面是一個代碼示例:
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
NSUInteger fromSection = [fromIndexPath section];
NSUInteger fromRow = [fromIndexPath row];
NSString *fromKey = [self.keys objectAtIndex:fromSection];
NSMutableArray *fromEventSection = [self.eventsDict objectForKey:fromKey];
NSUInteger toSection = [toIndexPath section];
NSUInteger toRow = [toIndexPath row];
NSString *toKey = [self.keys objectAtIndex:toSection];
NSMutableArray *toEventSection = [self.eventsDict objectForKey:toKey];
id object = [[fromEventSection objectAtIndex:fromRow] retain];
[fromEventSection removeObjectAtIndex:fromRow];
[toEventSection insertObject:object atIndex:toRow];
[object release];
// The above code works just fine!
// Try to delete an empty section. Here is where trouble begins:
if ((fromSection != toSection) && [fromEventSection count] == 0) {
[self.keys removeObjectAtIndex:fromSection];
[self.eventsDict removeObjectForKey:fromKey];
[tableView deleteSections:[NSIndexSet indexSetWithIndex:fromSection] withRowAnimation:UITableViewRowAnimationFade];
}
弄來這個答案。我想不出來 – 2009-11-16 22:50:25
不完全。但我的確如下所述: 我停止嘗試在用戶移動行時刪除空白部分,而是在用戶完成編輯後選擇刪除空白部分。然而,即使如此,刪除和空白部分也不能正常工作(我懷疑蘋果的bug)。所以爲了刪除空白部分,我最終在每個空白部分中添加了一行零高度,然後刪除這些部分。 看看YouTube上的這個演示:http://tinyurl.com/ycg4uhs,看看這種方法是否適合你。 – Sergio 2009-11-18 12:52:06