iOS容器视图在UITableViewCell

前端之家收集整理的这篇文章主要介绍了iOS容器视图在UITableViewCell前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在UITableView单元格中添加另一个视图控制器.这个想法是,您可以点击单元格,并扩展以显示更多内容 – 消息传递界面.这很重要(我认为)这是由一个单独的Messaging ViewController控制的.

扩展单元格并且具有适当约束的单元格内部的视图在Storyboards中实际上非常简单,所以我试图通过将容器中的新的VC添加到TableViewCell中来保留所有内容.这样我就可以在容器视图中添加约束,并从Messaging VC中管理内容.

这是错误

Illegal Configuration: Container Views cannot be placed in elements that are repeated at runtime.

有什么办法来解决这个问题,还是有一种方法,我可以将视图从viewcontroller导入到这个tableviewcell中,并限制我在Storyboards中设置的配置?谢谢!

解决方法

我有同样的任务,这样做:

步骤1.创建子类MyCell:UITableViewCell.

步骤2.如果您使用自定义单元格,在InterfaceBuilder中将UIView添加到MyCell中,然后向所有边添加高度约束和约束.这个视图需要设置单元格的高度.
如果没有,请跳过此步骤并使用heightForRowAtIndexPath.


步骤3.在MyCell.h中,从视图高度约束和控制器属性添加出口:

@interface MyCell: UITableViewCell

@property (weak,nonatomic) MessagingVC *controller;
@property (weak,nonatomic) IBOutlet NSLayoutConstraint *viewHeight;

@end

步骤4.在cellForRowAtIndexPath中添加代码

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

    MyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyCell" forIndexPath:indexPath];

    // adjust this for your structure 
    cell.controller = [[UIStoryboard storyboardWithName:@"MessagingVC" bundle:nil] instantiateInitialViewController];

    [self addChildViewController:cell.controller];
    [cell.controller didMoveToParentViewController:self];
    [cell.contentView addSubview:cell.controller.view];

    //  if you use Self-Sizing Cells
    cell.viewHeight.constant = 200; // set your constant or calculate it

    return cell;
}

步骤5.添加didEndDisplayingCell方法

- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    if ([cell isKindOfClass:[MessagingVC class]])
         [((MyCell*)cell).controller removeFromParentViewController];
}
原文链接:https://www.f2er.com/iOS/336660.html

猜你在找的iOS相关文章