我在用户输入内容时在单元格中编辑名称时遇到一些麻烦。
实际上,他们点击“添加名称”按钮,将其带到详细控制器并输入用他们的名字和姓氏点击“完成”。委托给主控制器并更新单元格以显示该名称。
我想要的是让他们能够输入多个名字,然后点击一个单元格,然后将它们带回已经输入的数据(存储在名为'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”,文本字段为空,准备添加新名称...
所有和任何帮助非常感谢:)
答案 0 :(得分:1)
我认为你的工作方式错误,你不要直接将值设置为UITextfield
,而是将NSString
传递给你的模型属性。
这是MVC
数据不应直接与UI
交互的全部内容。
在MasterViewController
中,您需要导入DetailViewController
标题:
#import "DetailViewController.h"
在didSelectedRow
:
-(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;