2012-02-01 79 views
7

我在我的tableview应用程序中创建一个“喜欢的页面”菜单,用户可以在其中保存最喜欢的网页,然后通过菜单更轻松地导航到它们。为了便于记住哪个链接是哪个,我想让用户点击一个说“编辑”的按钮,以某种方式选择他们想要编辑名称的单元格,然后键入新名称,然后输入新名称将单元格重命名为用户输入的内容。我当前正在使用内置设置应用程序来保存链接数据。允许用户编辑UITableView单元格中的文本

我不需要知道我刚才问的每个方面。我只想知道用户是否可以编辑tableview的单元格文本,以及使用什么方法来实现。

我已经看到其他问题,涵盖了类似的基础,但通常从更多的编程基础。

+0

可能重复的[可编辑的UITableView在每个小区中的文本字段(http://stackoverflow.com/questions/7064525/editable-uitableview-with-a-textfield- on-each-cell) – 2012-02-01 03:13:40

+0

@Jim谢谢,但这篇文章指的是嵌入式文本框始终打开。 – DGund 2012-02-01 11:22:39

回答

7

用户不能直接编辑tableview的单元格文本。 (从技术上讲,这将是cell.textLabel.text)。但是,如果它们进入“编辑”模式,则可以轻松地在单元格(或模式视图)中显示预填充当前值的UITextField,让它们编辑它,保存并更新cell.textLabel。文字价值你自己。

+0

似乎是逻辑解决方法。 – DGund 2012-02-01 23:54:17

-1

所以,我认为最好的方法是使用tabelview cell editstyle。 你可以使用tableview委托设置单元格编辑样式。当用户编辑单元格时,你可以做一些你想要的。 设置单元格样式:

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

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

做事用户点击编辑按钮时:

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

这不是一种“编辑” - 这种编辑是指移动单元格或删除单元格。 @Rayfleck说的 – Rayfleck 2012-02-02 00:13:25

+0

-1。删除这个答案可能是正确的回应,或者您可以回复评论。 – 2012-03-15 00:28:58

6

UITableView细胞都在这里创建,通常

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

(代表之一UITableView)。

因此,如果您继承UITableViewCell并揭示text属性,则可以按照自己的意愿进行操作,包括在单元中保存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; 
} 
相关问题