【问题标题】:Loading view from XIB into ViewController and VIewCell将视图从 XIB 加载到 ViewController 和 VIewCell
【发布时间】:2015-07-11 15:21:40
【问题描述】:

我有一个带有自定义类 ProfileHeaderView 的 XIB。 我也有 ProfileViewControllerProfileTableViewCell,它们都带有 IBOutlet profileHeader

我想要的是将 nib 加载到 profileHeader 中。到目前为止,我通过加载 NIB 然后将其添加为 profileHeader 的子视图来做到这一点,我想这不是最好的解决方案,我必须手动设置框架。

let view = NSBundle.mainBundle().loadNibNamed("ProfileHeaderView", owner: self, options: nil).last as! ProfileHeaderView
view.setFrame(...)
self.profileHeaderView.addSubview(self.view)

实现它的最佳方法是什么?

【问题讨论】:

    标签: ios swift xib nib


    【解决方案1】:

    首先,创建自定义视图类

    class CustomView: UIView {
    
        // MARK: Custom View Initilization
        var view: UIView!
    
        func xibSetup() {
            view = loadViewFromNib()
            view.frame = bounds
            view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
            addSubview(view)
            //// additional setup here
        }
        func loadViewFromNib() -> UIView {
            let bundle = NSBundle(forClass: self.dynamicType)
            // set nibName to be xib file's name
            let nib = UINib(nibName: "CustomView", bundle: bundle)
            let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
            return view
        }
        override init(frame: CGRect) {
            super.init(frame: frame)
            xibSetup()
        }
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            xibSetup()
        }
    
    }
    

    其次,在CustomView.xib中设置File's owner自定义类为CustomView


    之后,你就完成了。您可以通过编程方式创建自定义视图。

    let customView = CustomView(frame: frame)
    self.view.addSubview(customView)
    

    或者使用故事板,将 UIView 拖到 ViewController 并将 UIView 的自定义类设置为CustomView

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 2012-12-28
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2014-01-20
      相关资源
      最近更新 更多