用XIB和插座加载自定义UIView的最佳策略是什么?目前,我有下面列出的代码。我认为这段代码很糟糕,因为我有2个UIViews作为容器,将来可能会遇到约束问题。


UIViewController(我不希望所有输出和动作都在一个大ViewController中)

func showCategories() {
     if(self.categoriesView == nil) {
         self.categoriesView = CategoriesView()
     }

     self.view.addSubview(self.categoriesView!)
}

自定义UIView-CategoriesView

class CategoriesView, ...protocols... {

@IBOutlet var table:UITableView!

override init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

override init(frame:CGRect) {
    super.init(frame: frame)
}

override init() {
    super.init()

    let views   = NSBundle.mainBundle().loadNibNamed("CategoriesView", owner: self, options: nil)
    let view    = views![0] as CategoriesView
    self.frame  = view.frame

    self.addSubview(view)
}

....

}

最佳答案

在Apple的MVC中,最好避免使用逻辑过多的视图。如果要使用组件子视图组成复杂的视图,请查看Creating Custom Container View Controllers

如果您已经在使用情节提要,则容器视图将解决您的大部分复杂性。

07-26 09:39