在一个UITableViewController中有两个UITableViews
问题描述:
我想在一个UITableViewController中有两个不同的UITableViews,并且一次只显示其中的一个。父视图控制器作为他们的数据源。当VC第一次加载时,我加载两个表的数据,以便用户在切换表时不必等待。在一个UITableViewController中有两个UITableViews
我以编程方式添加第二个表视图,但之后我失去了为第一个表视图实现的所有样式,这是我在故事板中所做的。更重要的是,我没有用于第二个表格视图的原型单元格。
问题:如何克隆第一个tableView来创建第二个tableView?
CurrentCode:
// Set up Recent Posts Table
[self.recentPostsTable setDelegate:self];
[self.recentPostsTable setDataSource:self];
[self.recentPostsTable setTag:0];
// Set up hot Posts Table
UITableView *hotPostsTable = [[UITableView alloc] initWithFrame:self.recentPostsTable.frame style:self.recentPostsTable.style];
[hotPostsTable setDelegate:self];
[hotPostsTable setDataSource:self];
[hotPostsTable setTag:1];
self.hotPostsTable = hotPostsTable;
[self fetchPosts:RECENT_POSTS_TABLE_TAG limit:[NSNumber numberWithInteger:NUM_RECENT_POSTS_IN_ONE_BATCH] skip:@0];
[self fetchPosts:HOT_POSTS_TABLE_TAG limit:[NSNumber numberWithInteger:NUM_HOT_POSTS_IN_ONE_BATCH] skip:@0];
答
这听起来像你实际上并不希望2 UITableViews
,而是2 UITableViewDataSources
。创建两个类,每个类以您要使单独表视图运行的方式实现UITableViewDataSource
方法。然后,当您想要“在表格视图之间切换”时,只需将其中一个数据源分配给self.tableView.dataSource
即可。
您不需要两个数据源。只需基于两种模式中的一种,将一组数据源和委托方法基于两个阵列之一。 – rmaddy
我想要两个单独的UITableViews的原因是我不希望用户等待渲染新的表格单元格。如果我简单地为相同的tableview交换数据源,每当我更改源时tableview都会被重新渲染,不是吗? –
如果数据仍然在内存中,那么它只会刷新单元格;没什么大不了的。就像@ rmdaddy所说的,你可以把它归结为两个数组,并且只是对这两个数组保持引用,以便数据保留在内存中。 – keithbhunter