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

DGu*_*und 8 cocoa-touch objective-c uitableview ios

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

为了便于记住哪个链接是哪个,我想让用户单击一个显示"编辑"的按钮,以某种方式选择要编辑其名称的单元格,然后键入新名称并让单元格重命名本身就是用户键入的内容.我目前正在使用内置设置应用程序来保存链接数据.

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

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

Ray*_*eck 7

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


Dan*_*ark 6

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

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)

(其中一位代表UITableView).

因此,如果您子类化UITableViewCell并公开text属性,则可以执行您想要的操作,包括UITextField在Cell中保存实例.确保像往常一样使用出队的东西.

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

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

如果您创建UITableViewCell子类a 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;
}
Run Code Online (Sandbox Code Playgroud)