单击单元格后在详细控制器中编辑文本字段

时间:2014-03-27 15:34:32

标签: objective-c uitableview

我在用户输入内容时在单元格中编辑名称时遇到一些麻烦。

实际上,他们点击“添加名称”按钮,将其带到详细控制器并输入用他们的名字和姓氏点击“完成”。委托给主控制器并更新单元格以显示该名称。
我想要的是让他们能够输入多个名字,然后点击一个单元格,然后将它们带回已经输入的数据(存储在名为'entry'的NSMutableArray中)点。

-(void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
     self.detailView.firstNameField.text = [[self.entry objectAtIndex:indexPath.row]firstName]];  
     NSLog(@"%@",[[self.entry objectAtIndex:indexPath.row]firstName]);
     NSLog(@"%@", self.detailView.firstNameField.text);
}

第一个NSLog显示名称很好,但第二个返回为“null”,文本字段为空,准备添加新名称...
所有和任何帮助非常感谢:)

1 个答案:

答案 0 :(得分:1)

我认为你的工作方式错误,你不要直接将值设置为UITextfield,而是将NSString传递给你的模型属性。

这是MVC数据不应直接与UI交互的全部内容。

MasterViewController中,您需要导入DetailViewController标题:

#import "DetailViewController.h"

didSelectedRow

中执行segue
-(void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
     [self performSegueWithIdentifier:@"detailSegue" sender:sender];
}

实现segue deleguate并设置其firstName属性(NSSrting

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
 // Make sure your segue name in storyboard is the same as this line
 if([segue.identifier isEqualToString:@"detailSegue"]){

    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

    DetailViewController*detailView = (DetailViewController*)segue.destinationViewController;
    detailVC.firstName =[[self.entry objectAtIndex:indexPath.row]firstName]]; 

    NSLog(@"%@",[[self.entry objectAtIndex:indexPath.row]firstName]);
  }
}

然后在DetailView的viewDidLoad中,您可以将firstName字符串分配给UItextfield文本属性:

_firstNameField.text = self.firstName;