正确操作表视图和表详细信息视图

时间:2010-08-31 06:25:36

标签: iphone uitableview uinavigationcontroller refresh

我需要一点帮助。在我的项目中有一个标签栏。在其中一个标签栏项目上有一个导航控制器,在视图上有一个表格视图。

对于TableViewController,有通常的代码:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return [myData count];
}

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

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// here the DetailViewController is activated
}

DetailViewController的构造类似于TableViewController。与所选的TableView行相关的数据将是SQL查询的关键数据,其结果随后存储在数组中。唯一的区别是我用这个:

viewWillAppear:includes和SQL查询,然后将结果加载到数组sqlQueryResult中。

- (void)viewWillDisappear:(BOOL)animated {
        while( [sqlQueryResult count] >0 )           
[sqlQueryResult removeObjectAtIndex:0];
}

这是第一次显示表DetailView时的工作原理。但是,如果我们返回到TableView并选择一个不同的行,则会出现DetailView但是以下内容不会再次运行(正如他们已经做过的那样):numberOfSectionsInTableView:或者,tableView:(UITableView *)tableView numberOfRowsInSection :.我在文档中读到有些方法只被调用一次 - 但是我没有看到这些方法。

如何“重置”TableView?或者我应该调用哪些方法来设置其行/节的数量?

1 个答案:

答案 0 :(得分:1)

我相信你所寻找的是:

[self.tableView reloadData];

您基本上需要向tableView发送'reloadData'消息。然后它会再次调用您的方法来刷新其内容。