我正在尝试从uitableview中删除最后一个uitablviewcell,但我遇到了一些麻烦。我到目前为止的代码是。
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[self.tableView numberOfRowsInSection:0]] withRowAnimation:NO];
我认为会删除最后一个单元格?有什么建议?感谢。
答案 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];