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

发布于 2024-09-17 00:59:05 字数 1217 浏览 4 评论 0原文

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

对于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:包含和SQL查询,然后将结果加载到数组sqlQueryResult中。

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

当表 DetailView 显示时,这第一次起作用。但是,如果我们返回 TableView 并选择不同的行,则会出现 DetailView,但以下内容将不会再次运行(就像它们已经执行的那样): numberOfSectionsInTableView: 或 tableView:(UITableView *)tableView numberOfRowsInSection: 。我在文档中读到有些方法只被调用一次 - 但是我还没有看到这些方法的这样的评论。

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

I need a small help. In my project there is a tab bar. On one of the tab bar items there is a navigation controller, on the view there is a table view.

For TableViewController there are the usual codes:

- (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
}

The construction of DetailViewController is similar to the TableViewController. The data related to the selected row of TableView will be the key data for the SQL query, the result of which is then stored in an array. The only difference is that I use this:

viewWillAppear: includes and SQL query, then loads the result into the array sqlQueryResult.

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

This works the very first time when the table DetailView is shown. However, if we go back to TableView and select a different row, DetailView appears but the followings will not run again (as they did already): numberOfSectionsInTableView: or, tableView:(UITableView *)tableView numberOfRowsInSection: . I read in the docs that there are methods that are called only once - however I haven't seen such remark for these ones.

How can I "reset" the TableView? Or what methods should I call to set the number of its rows/sections?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟酒忠诚 2024-09-24 00:59:05

我相信您正在寻找的是:

[self.tableView reloadData];

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

What you're looking for I believe is:

[self.tableView reloadData];

You basically need to send a 'reloadData' message to your tableView. It will then call your methods again to refresh its contents.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文