I am creating a "favorite pages" menu in my tableview application, where users can save their favorite web pages and then navigate to them easier through the menu.
For ease of remember which link is which, I want to allow the user to click a button that says "edit," somehow select the cell that they want to edit the name of, and then type in the new name and have the cell rename itself to what the user typed in. I am currently using the built in settings application to save the link data.
I don't need to know every aspect of what I just asked. I just want to know if it is possible for the user to edit the cell text of a tableview, and what methods I would use to do so.
I've seen other questions that cover similar ground, but generally from a more programmatic basis.
The user cannot directly edit the cell text of a tableview. (Technically, it would be the cell.textLabel.text). However, if they go into an "edit" mode, you could easily display a UITextField in the cell (or in a modal view) which is prepopulated with the current value, let them edit it, save and then update the cell.textLabel.text value yourself.
Your UITableView
cells are created here, usually
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
(one of the delegates for the UITableView
).
So if you subclass UITableViewCell
and expose a text
property, you can do what you want, including holding a UITextField
instance in the Cell. Make sure to use the dequeue stuff as you would normally.
Then, when the user touches the UITableViewCell
you can give the UITextField
the focus:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.thatTextFieldIMentioned becomeFirstResponder];
}
If you make the UITableViewCell
subclass a UITextFieldDelegate
and make it the delegate for the text field, you can easily handle these annoyingly hard-to-remember methods:
- (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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With