如何删除最后一个UITableViewCell

时间:2009-12-18 19:17:39

标签: iphone uitableview

我正在尝试从uitableview中删除最后一个uitablviewcell,但我遇到了一些麻烦。我到目前为止的代码是。

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[self.tableView numberOfRowsInSection:0]] withRowAnimation:NO];

我认为会删除最后一个单元格?有什么建议?感谢。

3 个答案:

答案 0 :(得分:1)

该部分中的行数不是基于0的(即,即使indexPath.row == 0,它也会返回1)。尝试arrayWithObject:([self.tableView numberOfRowsInSection:0] - 1)。

此外,[self.tableView numberOfRowsInSection:]返回一个NSInteger,当数组确实需要NSIndexPath对象时。

答案 1 :(得分:1)

假设您的表中只有1个部分,这应该这样做,具体取决于您放置此代码的位置:

NSInteger temprowcount = [self.tableView numberOfRowsInSection:0];
if (temprowcount > 0) {
    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:temprowcount-1 inSection:0]] withRowAnimation:UITableViewRowAnimationNone];
}

答案 2 :(得分:0)

如果您有多个部分,假设self是包含tableView且符合UITableViewDataSource协议的视图控制器:

NSUInteger _lastSection = [self numberOfSectionsInTableView:tableView];
NSUInteger _lastRow = [tableView numberOfRowsInSection:_lastSection] - 1;
NSUInteger _path[2] = {_lastSection, _lastRow};
NSIndexPath *_indexPath = [[NSIndexPath alloc] initWithIndexes:_path length:2];
NSArray *_indexPaths = [[NSArray alloc] initWithObjects:_indexPath, nil];
[_indexPath release];

[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:_indexPaths withRowAnimation:UITableViewRowAnimationNone];
[tableView endUpdates];

[_indexPaths release];