Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将视图从XIB加载到ViewController和VIewCell_Ios_Swift_Xib_Nib - Fatal编程技术网

Ios 将视图从XIB加载到ViewController和VIewCell

Ios 将视图从XIB加载到ViewController和VIewCell,ios,swift,xib,nib,Ios,Swift,Xib,Nib,我有一个带有自定义类ProfileHeaderView的XIB。 我还有ProfileViewController和ProfileTableViewCell,它们都带有IBMOutlet profileHeader 我想要的是将nib加载到profileHeader中。到目前为止,我是通过加载NIB并将其添加为profileHeader的子视图来实现的,我想这不是最好的解决方案,我必须手动设置frame let view = NSBundle.mainBundle().loadNibNamed(

我有一个带有自定义类ProfileHeaderView的XIB。 我还有ProfileViewController和ProfileTableViewCell,它们都带有IBMOutlet profileHeader

我想要的是将nib加载到profileHeader中。到目前为止,我是通过加载NIB并将其添加为profileHeader的子视图来实现的,我想这不是最好的解决方案,我必须手动设置frame

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

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

首先,创建自定义视图类

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中
文件的所有者
自定义类设置为
CustomView


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

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

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

首先,创建自定义视图类

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中
文件的所有者
自定义类设置为
CustomView


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

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

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

首先,创建自定义视图类

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中
文件的所有者
自定义类设置为
CustomView


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

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

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

首先,创建自定义视图类

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中
文件的所有者
自定义类设置为
CustomView


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

let customView = CustomView(frame: frame)
self.view.addSubview(customView)
或者使用情节提要,将UIView拖动到ViewController并将UIView的自定义类设置为
CustomView