2015-09-26 74 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

相關問題