2015-09-26 101 views
1

我想在一个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]; 

回答

1

这听起来像你实际上并不希望2 UITableViews,而是2 UITableViewDataSources。创建两个类,每个类以您要使单独表视图运行的方式实现UITableViewDataSource方法。然后,当您想要“在表格视图之间切换”时,只需将其中一个数据源分配给self.tableView.dataSource即可。

+2

您不需要两个数据源。只需基于两种模式中的一种,将一组数据源和委托方法基于两个阵列之一。 – rmaddy

+0

我想要两个单独的UITableViews的原因是我不希望用户等待渲染新的表格单元格。如果我简单地为相同的tableview交换数据源,每当我更改源时tableview都会被重新渲染,不是吗? –

+1

如果数据仍然在内存中,那么它只会刷新单元格;没什么大不了的。就像@ rmdaddy所说的,你可以把它归结为两个数组,并且只是对这两个数组保持引用,以便数据保留在内存中。 – keithbhunter

相关问题