允许用户编辑UITableView单元格中的文本

时间:2012-02-01 02:55:10

标签: objective-c ios cocoa-touch uitableview

我正在tableview应用程序中创建一个“收藏页面”菜单,用户可以在其中保存自己喜欢的网页,然后通过菜单更轻松地导航到它们。

为了便于记住哪个链接是哪个,我想让用户点击一个显示“编辑”的按钮,以某种方式选择他们想要编辑名称的单元格,然后键入新名称并拥有单元格将自己重命名为用户输入的内容。我目前正在使用内置设置应用程序来保存链接数据。

我不需要知道我刚问过的所有方面。我只是想知道用户是否可以编辑tableview的单元格文本,以及我将使用哪些方法。

我已经看到其他问题涉及类似的基础,但通常来自更具规划性的基础。

3 个答案:

答案 0 :(得分:7)

用户无法直接编辑tableview的单元格文本。 (从技术上讲,它将是cell.textLabel.text)。但是,如果它们进入“编辑”模式,您可以轻松地在单元格(或模态视图)中显示UITextField,该UITextField预先填充当前值,让它们编辑它,保存然后更新cell.textLabel。文本重视自己。

答案 1 :(得分:6)

您的UITableView单元格在这里创建,通常是

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

UITableView的代表之一)。

因此,如果您继承UITableViewCell并公开text属性,则可以执行所需操作,包括在Cell中保留UITextField实例。确保像往常一样使用出队的东西。

然后,当用户触摸UITableViewCell时,您可以将焦点UITextField

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.thatTextFieldIMentioned becomeFirstResponder];
}

如果您将UITableViewCell子类设为UITextFieldDelegate并使其成为文本字段的委托,则可以轻松处理这些令人烦恼的难以记忆的方法:

- (void)textFieldDidEndEditing:(UITextField *)textField {
    NSLog(@"yeah inform someone of my change %@", textField.text);
}

- (BOOL)textFieldShouldClear:(UITextField *)textField {
    return YES;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}

答案 2 :(得分:-1)

所以,我认为最好的方法是使用tabelview cell editstyle。 您可以使用tableview委托set cell editstyle。用户编辑单元格时,您可以执行所需操作。 在以下位置设置单元格样式:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

当用户点击编辑按钮时执行以下操作:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath