将ViewController添加为UITableViewCell中的子视图 - 未显示

时间:2012-04-09 22:27:56

标签: iphone uitableview uiviewcontroller storyboard subview

我试图将ViewController添加到我的TableView单元格中,但是在测试时它没有出现。

PhotoLocation是一个UIViewController子类。我在StoryBoard上创建了一个View Controller,上面配置了一堆UILabel,UITextFields,UISwitch等。 PhotoLocation与该StoryBoard视图控制器相关联,其标识符为PhotoLocation。

在一个单独的控制器--UITableViewController中,我有一个工作TableView,其中包含填充各种信息的单元格,我正在尝试将PhotoLocation VC添加为每个单元格的子视图。 (注意:PhotoLocation是一个自由形式的VC,大小为210x100)。

在我的cellForRowAtIndexPath方法中,我执行以下操作:

// snip code above which sets up the cell and performs various other things

PhotoLocation *photoLocation_ = [self.storyboard instantiateViewControllerWithIdentifier:@"PhotoLocation"];
[photoLocation_.view setFrame:CGRectMake(115, 0, 210, 109)];
[cell.contentView addSubview:photoLocation_.view];

return cell;

当我运行应用程序时,子视图不会显示在单元格中。我有什么东西在这里吗?

2 个答案:

答案 0 :(得分:2)

如果我理解正确,请尝试创建一个nib文件(文件 - >新文件 - >用户界面 - >查看)。删除“视图”并将表视图单元格拖出。按照你在帖子中描述的那样进行解决。在tableViewController中执行:

if (cell == nil) {
    [[NSBundle mainBundle] loadNibNamed:@"TVCell" owner:self options:nil];
    cell = tvCell;
    self.tvCell = nil;
}

原因是,除了控制器控制器(Tab Bar,Navigation,SplitView)之外,你不能同时在屏幕上有2个“viewControllers”。您正试图将一个视图控制器放在另一个视图控制器中。

答案 1 :(得分:0)

你试过这个吗?

PhotoLocation *photoLocation_ = [self.storyboardinstantiateViewControllerWithIdentifier:@"PhotoLocation"];

[photoLocation_.view setFrame:CGRectMake(115, 0, 210, 109)];

[cell addSubview:photoLocation_.view];

return cell;