我有一个tableview,通过在文本字段中输入数据并单击添加按钮来填充。
我已经通过将tableview的编辑模式设置为YES,将删除和重新排序功能实现到tableview。这适用于单击编辑按钮。
现在我希望能够选择一行,显示文本字段中所选行的文本,编辑该文本并将新文本添加到同一行索引。什么是最好的方法。
更新 我正在使用didSelectRowAtIndexPath来选择行并更新addEditButton方法中所选行中的文本,如答案中所建议的那样。我在选择行时将“添加成分”按钮更改为“更新”。
但是当我点击“更新”按钮时,应用程序崩溃了。我不确定我做错了什么。有人可以建议使用代码,我该如何实现编辑功能?
这是我的新代码:
//Edit a row in the tableview
- (void)tableView:(UITableView *)iTableView didSelectRowAtIndexPath:(NSIndexPath *)iIndexPath
{
[iTableView deselectRowAtIndexPath:iIndexPath animated:NO];
UITableViewCell *cell = [self.ingredientsTableView cellForRowAtIndexPath:iIndexPath];
if (cell.selected) {
//change the text of the add indredient button to Update
[self.addUpdateButton setTitle:@"Update" forState:UIControlStateNormal];
//show the cancel button
[self.cancelUpdateButton setHidden:NO];
self.ingredientTextField.text = self.ingredientItems[iIndexPath.row];
//self.recipeIndex = iIndexPath.row;
self.selectedCellIndexPath = iIndexPath;
}
}
//Add text in tableview
- (IBAction)addIngredient:(id)sender
{
//Add ingredients
if ([self.addUpdateButton.titleLabel.text isEqualToString: @"Add Ingredient"]) {
if ([self.ingredientTextField.text length] != 0) {
//when button clicked add the text to the ingredientItems
[self.ingredientItems addObject:self.ingredientTextField.text];
[self.ingredientsTableView reloadData];
self.ingredientTextField.text = @"";
[self.ingredientTextField resignFirstResponder];
}
//Update the selected row ingredient
} else if ([self.addUpdateButton.titleLabel.text isEqualToString:@"Update"])
{
//the row selected should be updated with the new text
//remove the previous object from the array and add the new one on the same index and the same row
[self.ingredientItems removeObject:self.selectedCellIndexPath];
[self.ingredientItems addObject:self.ingredientTextField.text];
[self.ingredientsTableView beginUpdates];
[self.ingredientsTableView reloadRowsAtIndexPaths:@[self.selectedCellIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.ingredientsTableView endUpdates];
}
}
以下是视图控制器的屏幕截图
答案 0 :(得分:0)
这是你如何实现这个目标的:
步骤1:点击单元格后,使用单元格配方文本加载文本字段。保存单元格索引&索引路径。
- (void)tableView:(UITableView *)iTableView didSelectRowAtIndexPath:(NSIndexPath *)iIndexPath {
[iTableView deselectRowAtIndexPath:iIndexPath animated:NO];
self.ingredientTextField.text = self.ingredientItems[iIndexPath.row];
self.selectedCellIndexPath = iIndexPath;
}
步骤2:更新单元格中的文本并更新模型。
我假设您可以使用self.selectedCellIndexPath.row
更新self.ingredientItems
。
第3步:现在重新加载受影响的单元格。
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[self.selectedCellIndexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];