2012-03-01 82 views
0

我正在構建一個表格,其中UITableView的每個單元格都是UIViewController。我需要在表格的三行中顯示三個不同的UIViewController。我將每個單元格的行設置爲與UIViewController的大小相匹配,因此每行都是不同的高度。直到單元格位於屏幕頂部時才繪製UITableView單元格

當應用第一次啓動時,只有第一個單元格中的UIViewController出現。直到我滾動表格時,下一行的內容纔會顯示出來,以便該行的頂部位於屏幕的頂部。同樣,如果我略微向下滾動以使行稍稍離開屏幕底部,當我向後滾動一點時,行內容就消失了。

這是我正在使用的代碼。注意:控制器是在viewdidload方法中創建的

我錯過了什麼?由於

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:  (NSIndexPath *)indexPath 
{ 

static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) 
{ 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 


    switch(indexPath.section) 
    { 
     case 0: 
     { 
      [cell.contentView addSubview:patientInformationController.view]; 
      break; 
     } 
     case 1: 
     { 
      [cell.contentView addSubview:labsController.view]; 
      break; 
     } 
     case 2: 
     { 
      [cell.contentView addSubview:planController.view]; 
      break; 
     }  


     default: 
      break; 
    } 
} 
return cell; 
} 

回答

1

UITableViewController是一個巨大的,高層次的構建高效地管理數據和用戶界面對象的整個屏幕。 UITableViewCell是一個小巧,高效,高度優化的視圖類,旨在儘可能快地繪製和更新。

千萬不要永遠不要將UIViewController's視圖添加到UITableViewCellcontentView。一些標籤,圖像,或許是一個小控件,如UISwitchUITextView

如果你還沒有,請閱讀here

如果要將視圖控制器(patientInformationController,labsController)與表視圖的特定行相關聯,則正確的方法是將該行的單元格標籤設置爲可讀的字符串,例如@「患者信息「或@」Labs「,然後在選擇該行時使用UINavigationController來推送正確的視圖控制器。

UINavigationController管理一堆UIViewControllers。一個UIViewController管理一個單一的連貫接口,通常由一堆協作視圖組成。 UITableViewController是管理單個UITableView的UIViewController的子類。 UITableView是一個專門針對表格數據進行快速渲染和呈現的類,根據您提供的代表和數據源將其組織爲段和行。 UITableView的一個功能是在用戶選擇UITableView的一行時通知其委託,允許委託通過UINavigationController向用戶展示一個新的UIViewController,以供用戶使用更多的細節和功能。

希望這會有所幫助。開始閱讀。

+0

感謝您的回覆。所以我應該基本上使用完全相同的代碼,除了在UITableViewController?實際上,這段代碼所在的類位於UITableViewController – WolfpackEE 2012-03-01 20:28:47

+0

不客氣。這聽起來像是你剛接觸iOS編程 - 沒有錯。但基於你的問題,我認爲你對於如何把事情放在一起有一些困惑。我認爲你應該參加一些閱讀文檔的工作,然後回到我們這裏。我在上面的答案中增加了一些。 – QED 2012-03-01 20:30:28

+0

是的,我是新來的。三個月後(來自25年的Windows編程)。我一直在使用表格,但需求只是改變到了UI變得更復雜的地方。因此,我已經從表格行作爲簡單標籤UIViewcontrollers。我將開始閱讀文檔並深入挖掘。感謝您的幫助 – WolfpackEE 2012-03-01 20:44:11

相關問題