2012-03-01 79 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

相关问题