Swift以编程方式在UITableViewCell中添加UIViewController或UIView

时间:2017-02-14 00:39:57

标签: ios swift uitableview uiviewcontroller swift3

我有一个使用swift文件和Xib创建的UIViewController的自定义子类。

我想在多个地方重用这个子类(因为很复杂),所以我不想创建UITableViewCell或UICollectionViewCell的其他子类并实现相同的行为。

我的ViewController也是可扩展的,所以我没有单一的大小,但是由它的组件的可见性决定(我有一些约束在折叠时减少到0或者在展开时减少到正常大小)

只有通过子类化单元格,将这个UIViewController(或它的视图)添加到单元格(表或集合)的最佳方法是什么?

只需将ViewController的视图添加到(单元格的)contentView并设置它的框架不起作用,视图就会相互显示,并且原点也会向上显示。

更新

示例:

MyViewController:

class MyViewController: UIViewController
{
// has the view property 
}

了myCell

class MyCell: UITableViewCell 
{

var myViewController:  MyViewController!
   override func awakeFromNib()
  {
      myViewController = MyViewController()
       self.contentView.addSubview(myViewController.view)
     //what to do next to fit the myViewController inside contentView, 
     //myViewController.view is bigger , 
     //and make the cell to follow the myViewController.view size

  }

}

1 个答案:

答案 0 :(得分:0)

我认为你会混淆UIViewUIViewController。我只会制作您的自定义UIView

import UIKit

class CustomView: UIView {

    override func draw(_ rect: CGRect) {
        // Drawing code

        // Do complicated stuff in this view...
    }

}

如果你想使用StoryBoard,你可以将它附加到xib,但听起来你是在动态地在代码中完成所有操作。然后在需要时创建此视图的实例。例如:

    let cv = CustomView()
    cv.frame = CGRect(x: 100, y: 100, width: 200, height: 200)
    self.view.addSubview(cv)