在哪里插入[tableView reloadData]

时间:2013-12-26 23:54:13

标签: ios objective-c uitableview

我有一个全局可变数组。当我从其他viewController添加对象时,我希望tableView更新。我知道我必须使用[tableView reloadData]来更新我的tableView。但是我不知道我应该把这段代码放在哪里让我的tableView保持最新状态?

我试过这样:

 -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    AppDelegate *delegate= (AppDelegate*)[[UIApplication sharedApplication] delegate];

    return [delegate.globalArray count];

    [tableView reloadData];        
}    

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    AppDelegate *delegate= (AppDelegate*)[[UIApplication sharedApplication] delegate];

    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"cell"];
    cell.textLabel.text = delegate.globalArray [indexPath.row];
    return cell;

    [tableView reloadData];    
}

2 个答案:

答案 0 :(得分:2)

只要数组内容发生变化,就应该调用reloadData。不要在那些方法中调用它(在返回之后什么也不做 - 很惊讶你没有得到关于无法访问的编译错误)

答案 1 :(得分:0)

SB。答案是对的。当数组内容发生变化时,应使用reloadData

为了维护表的更新,它严格依赖于您的应用程序流程。我会试着解释一下。

例如,假设启动应用程序时,表视图(由特定控制器管理,例如A)可见,您可以使用加号按钮添加其他元素。点击加号按钮,它将打开一个模态控制器(比如说B),可以让你添加元素。要从B到A进行数据重新加载,您可以使用通知,块等。

无论如何,如上所述,这取决于您的申请。也许,如果管理表的控制器每次都是新的,你不需要这种类型的方法......