我在表视图中有几行我想编辑。
我认为 setEditing 方法会给我一个编辑和删除按钮,但它只显示一个删除按钮。因为我没有一个将被推入didSelectRowAtIndexPath的详细视图控制器,我想我可以在所选单元格中显示几个编辑元素。
我需要添加三个按钮来指定分配优先级:低,高和中优先级。这意味着我必须更改所选单元格的高度以便为这些按钮腾出空间,我认为这很容易做到。
我想知道这是否是正确的选择路径?
我今天做了很多研究而没有找到其他人如何在UITableViewCell中解决编辑的例子。如果您在iPhone中的联系人应用程序中编辑联系人,UITableViewCells会更改以便快速轻松地进行编辑,这就是我正在寻找的内容。
那么对于这个问题我有什么建议?
我在didSelectRowAtIndexPath中的代码是:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
Cell *selectedCell = (Cell *)[tableView cellForRowAtIndexPath: indexPath];
UIButton *btn = [UIButton buttonWithType: UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 50, 100);
btn.titleLabel.text = @"Set this item to High Priority";
btn.backgroundColor = [UIColor greenColor];
[selectedCell.contentView addSubview: btn];
self.editing = YES;
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject: indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
heightForRowAtIndexPath的代码:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
Cell *cell = nil;
if (self.editing)
cell = (Cell *)[tableView cellForRowAtIndexPath: indexPath];
else
cell = nil;
BOOL expandCell = NO;
NSInteger expandationHeight = 0;
if (cell != nil)
{
for (UIButton *btn in cell.contentView.subviews)
{
NSLog(@"A button was found.");
expandationHeight = 70;
expandCell = YES;
}
}
return expandationHeight + heightOfOtherElements;
}
当我点击一个单元格时没有任何事情发生但一切都被禁用,我无法点击孔视图上的任何元素。这与[tableView cellForRowAtIndexPath:indexPath]有关,因为如果我取消注释该行,则UI不会被禁用。
我做错了什么?
答案 0 :(得分:1)
虽然需要一些东西,但这并不复杂。
您想要更改一个单元格或所有单元格的内容吗?
要为一个单元格指定特定高度,请使用- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
委托方法。
每次显示表格视图时都会为每个单元格调用它。如果要更改单行,请从UITableView调用reloadRowsAtIndexPaths:withRowAnimation:
方法。如果要更新所有单元格,只需使用- (void)reloadData
方法。
您还可以使用UITableView中的- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法访问特定单元格。然后你可以根据需要重新配置它以在其上添加各种元素。
因此,当选择一个单元格时,检查是否必须编辑它,然后: