在UITableViewCell中编辑TextLabel

cha*_*hyt 5 iphone uitableview ios

可能重复:
如何在UITableView中进行就地编辑?

我是这个iphone开发的新手.我只是想知道如何在tableView中编辑/更新UITextLabel.

我已经在使用编辑/完成动画并能够删除行但我无法获得如何编辑这些行中的文本.

我希望用户编辑单元格的文本标签.点击编辑按钮时.

我已经搜索过网站,但无法得到确切的答案.

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CellIdentifier"];
if(!cell)
{
    cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellIdentifier"]autorelease];
    cell.editingAccessoryType=YES;
}


myTextField = [[UITextField alloc] initWithFrame:CGRectMake(15, 6, 241, 31)];
myTextField.backgroundColor = [UIColor clearColor];
myTextField.textAlignment = UITextAlignmentLeft;
myTextField.returnKeyType = UIReturnKeyDone;
myTextField.delegate = self;
cell.accessoryView = myTextField;
myTextField.text = [self.arrayOfItems objectAtIndex:indexPath.row];
myTextField.enabled = NO;
return cell;
}

-(IBAction)Edit:(id)sender
{
if(self.editing)
{
            [myTextField.Enabled = YES];
    [super setEditing:NO animated:NO];
    [self.tab setEditing:NO animated:NO];
    [self.tab reloadData];
    [self.navigationItem.rightBarButtonItem setTitle:@"Done"];
    [self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStylePlain];
}
else 
{
    myTextField.enabled= YES;

    [super setEditing:YES animated:YES];
    [self.tab setEditing:YES animated:YES];
    [self.tab reloadData];
    [self.navigationItem.rightBarButtonItem setTitle:@"Edit"];
    [self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
 }
 }

- (UITableViewCellEditingStyle)tableView:(UITableView *)aTableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath 
{
if (self.editing == NO || !indexPath) 
return UITableViewCellEditingStyleNone;
if (self.editing && indexPath.row == ([self.arrayOfItems count])) 
{
    return UITableViewCellEditingStyleInsert;
} 
else 
{
    return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleNone;
}
Run Code Online (Sandbox Code Playgroud)

这对我不起作用.如果我按下编辑按钮,文本字段就会消失

gam*_*zii 1

编辑表行本身中的文本很困难,因为您需要管理键盘并向上滚动可编辑字段以为键盘等腾出空间(在编辑等时可能会滚动到屏幕之外)。此外,如果您使每个单元格都可编辑,则必须管理编辑的值,使其能够在编辑过程中滚动到屏幕之外等(即当键盘处于活动状态时等)。

UILabel 不可编辑,您需要 UITextField 来编辑文本。

实现对表格单元格中的值进行编辑的最佳方法可能是在编辑操作上将新的视图控制器推送到堆栈上,并在那里有一个可编辑的文本字段,并将保存/取消栏按钮项添加到该视图的菜单中控制器。

当用户按下“保存”时,使用适当的文本值更新表视图后面的模型,并再次将视图控制器从堆栈中弹出。让包含表的主视图在其 viewWillAppear 方法中调用 tableView 上的 reloadData 。

这将使您在编辑字段时能够最简单/最好地控制键盘行为和编辑行为。

  • 虽然这并不能真正回答如何进行表内文本编辑的问题,但它确实提出了一些有效的观点,说明为什么它在所有情况下都不是一个好主意。 (3认同)