表视图和表详细信息视图的正确操作
我需要一点帮助。在我的项目中有一个选项卡栏。在选项卡栏项目之一上有一个导航控制器,在视图上有一个表格视图。
对于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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我相信您正在寻找的是:
您基本上需要向您的 tableView 发送“reloadData”消息。然后它会再次调用您的方法来刷新其内容。
What you're looking for I believe is:
You basically need to send a 'reloadData' message to your tableView. It will then call your methods again to refresh its contents.