我有下一个问题。 这是我的视图控制器:
所以我希望当写入某些内容时会在tableview中显示texfield,但重载数据不起作用!继承我的代码:
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (!self.tasks) self.tasks = [NSMutableArray new];
[self.tasks addObject:textField.text];
[userDefaults setObject:self.tasks forKey:@"tasks"];
NSLog(@"tasks:%@", [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"]);
NSLog(@"number of tasks:%d", self.tasks.count);
TasksTableViewController *tasksTable = [[TasksTableViewController alloc]init];
[tasksTable.tableView reloadData];
[textField resignFirstResponder];
return YES;
}
在tasktableviewcontroller中:
[super viewDidLoad];
if (!self.TasksArray) self.TasksArray = [NSMutableArray new];
self.TasksArray = [[NSUserDefaults standardUserDefaults]objectForKey:@"tasks"];
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSLog(@"number of tasks when tableview:%d", self.TasksArray.count);
//return self.TasksArray.count;
return self.TasksArray.count;
}
我只调用细胞计数进行测试,并且总是显示1个细胞。
那么什么错?在NSLogs中,一切正确,打印文本字段的字符串和数组中的对象数量,所以希望你帮助我,谢谢!
答案 0 :(得分:1)
TasksTableViewController * tasksTable = [[TasksTableViewController alloc] init];
此行创建一个全新的表视图控制器。您需要找到当前正在显示的那个并将其传递给数据。 (可能是表视图控制器在重新加载时从用户默认值中获取任务)。
如何操作取决于您拥有的容器。你可以: