如何删除最后一行并在表格视图中添加更多行?
Posted
技术标签:
【中文标题】如何删除最后一行并在表格视图中添加更多行?【英文标题】:How to delete the last row and add more rows in the tableview? 【发布时间】:2012-03-18 13:01:11 【问题描述】:tableview的最后一行有一个按钮,当按下它时,我希望该行中的按钮消失,同时添加更多行,然后按钮再次出现在最后一行。 但我不知道怎么做! 这是我的代码:
- (void)morePicture:(id)sender
NSMutableArray *indexpath = [[NSMutableArray alloc] init];
[photos removeObjectAtIndex:[photos count]-1];
[indexpath addObject:[NSIndexPath indexPathForRow:[photos count]+1 inSection:0]];
[table beginUpdates];
[table deleteRowsAtIndexPaths:indexpath withRowAnimation:UITableViewRowAnimationNone];
NSMutableArray *indexPathss = [[NSMutableArray alloc] init];
for(int i=0; i<3; i++)
NSString *s = [[NSString alloc] initWithFormat:@"%d",i];
[photos addObject:s];
NSIndexPath *indexpath = [NSIndexPath indexPathForRow:i inSection:0];
[indexPathss addObject:indexpath];
【问题讨论】:
这段代码对你有用吗?如果photos
是您的数据源,那么您似乎正在尝试删除 indexPath 行中大于源中项目数的行([photos count]+1
应该是 [photos count]
)。
如果按钮始终是表格中的最后一项,则将其放在表格的页脚视图中可能会更容易。这样它就会一直在底部。
【参考方案1】:
您不需要调用deleteRowsAtIndexPaths
方法。请改用insertRowsAtIndexPaths
。只需在最后一行按钮上方添加行,不要删除它!
NSArray *newPhotos = ....;
NSMutableArray *photos = ...;
// insert new photos first (before table update)
[photos insertObjects:newPhotos atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange([photos count] - 1, [newPhotos count])];
NSMutableArray *newIndices = [NSMutableArray array];
for (NSInteger row = [photos count] - [newPhotos count] - 1; row < [photos count] - 1; row++)
[newIndices addObject:[NSIndexPath indexPathWithIndex:row];
[self.tableView insertRowsAtIndexPaths:newIndices withRowAnimation:UITableViewRowAnimationFade];
【讨论】:
但是,在我按下按钮后,它会添加更多行,但按钮不会再次显示【参考方案2】:UIButton *moreButton = [[UIButton alloc] initWithFrame:frame];
[moreButton setImage:[UIImage imageNamed:@"button_signin.png"] forState:UIControlStateNormal];
[moreButton addTarget:self action:@selector(showMoreRows) forControlEvents:UIControlEventTouchUpInside];
// 将按钮添加到表格页脚视图
self.tableView.tableFooterView = moreButton;
在方法中
-(IBAction) showMoreRows
//在数组中添加对象,该对象负责创建表视图,然后调用
[self.tableView reloadData];
【讨论】:
对了,如何设置页脚视图的高度? 可以设置按钮j的Frame以上是关于如何删除最后一行并在表格视图中添加更多行?的主要内容,如果未能解决你的问题,请参考以下文章