我有一个带有UITableView和NavigationController的UIViewController来实现向下钻取导航系统。用户可以浏览文件夹和文档的层次结构。
我正在使用NSFetchedResultController从数据库填充UITableView。
我想添加使用GridView(fe:AQGridView)浏览层次结构的选项。我们的想法是在导航栏上有一个按钮,用于切换 tableView和gridView。
问题/问题1:
使用表格以编程方式从控制器切换到带网格的控制器的最佳方法是什么?
问题/问题2:
切换后,如果有其他控制器被推入导航控制器, 并且用户返回,这些视图控制器将在没有任何变化的情况下呈现。如何更新这些视图控制器?例如:用户从表格切换到网格,然后返回,在弹出当前控制器后,用户再次看到一个表格 - >错。
答案 0 :(得分:2)
如果显示层次结构的顶层(UITableView),则需要在请求时添加UITableView或网格视图作为子视图。
您可以向视图控制器添加方法:
-(void)displayAsGridView {
// hide/remove the table view
// populate the grid view and display
}
-(void)displayAsTableView {
// remove or hide grid view
// make sure the table view exists, if not, create it
[self.tableView reloadData];
}
在表的数据源中:
-(UITableViewCell*)tableView:(UITaleView*)tableView cellForRowAtIndexPath:(IndexPath*)indexPath {
// you populate the view cell as you would for any other table
}
您可以在IB中创建这两者,也可以完全通过代码创建,无论哪种最适合您。关键是,你不会将其中任何一个推到导航控制器上,只是为了重新排列信息的显示方式。