使用XIB和Outlets加载自定义UIView的最佳策略

时间:2014-12-16 18:25:00

标签: ios swift uiview

使用XIB和Outlets加载自定义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)
    }
    
    ....
    
    }
    

1 个答案:

答案 0 :(得分:0)

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

如果您已经在使用故事板,则容器视图将为您提供大部分复杂性。