TableView Reloaddata不能正常工作?

时间:2014-03-09 21:18:56

标签: ios objective-c uitableview reloaddata

我有下一个问题。 这是我的视图控制器:

my viewcont

所以我希望当写入某些内容时会在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中,一切正确,打印文本字段的字符串和数组中的对象数量,所以希望你帮助我,谢谢!

1 个答案:

答案 0 :(得分:1)

  

TasksTableViewController * tasksTable = [[TasksTableViewController alloc] init];

此行创建一个全新的表视图控制器。您需要找到当前正在显示的那个并将其传递给数据。 (可能是表视图控制器在重新加载时从用户默认值中获取任务)。

如何操作取决于您拥有的容器。你可以:

  1. 浏览容器,导航控制器,顶视图控制器
  2. 在表格控制器中使用KVO来观察用户默认值
  3. 保存新任务并在表格控制器中观察时发布通知