我正在构建一个表,其中UITableView的每个单元格都是UIViewController。我需要在表的三行中显示三个不同的UIViewControllers。我设置每个单元格的行以匹配UIViewController的大小,因此每行都是不同的高度。
当应用程序首次启动时,只显示第一个单元格中的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;
}
答案 0 :(得分:1)
UITableViewController
是一个巨大的高级构造,用于有效管理整个数据屏幕和UI对象。 UITableViewCell
是一个小巧,高效,高度优化的视图类,旨在尽快绘制和更新。
从来没有向UIViewController's
的{{1}}添加contentView
视图。一些标签,一个图像,可能是一个小控件,如UITableViewCell
或UISwitch
。
如果您还没有,请开始阅读here。
如果要将视图控制器(patientInformationController,labsController)与表视图的特定行相关联,正确的方法是将该行的单元格标签设置为人类可读的字符串,例如@&# 34;患者信息"或@" Labs",然后,当选择行时,使用UINavigationController推送正确的视图控制器。
UINavigationController管理一堆UIViewControllers。 UIViewController管理单个连贯的接口,通常由一堆协作视图组成。 UITableViewController是UIViewController的子类,它管理单个UITableView。 UITableView是一个专门用于快速呈现和呈现表格数据的类,根据您提供的委托和数据源组织成部分和行。 UITableView的一个功能是在用户选择UITableView的行时通知其委托,允许委托通过UINavigationController呈现新的UIViewController,以便向用户呈现更多细节和功能。
希望这会有所帮助。开始阅读。