Swift 在viewcontroller中使用自定义uiview

Swift 在viewcontroller中使用自定义uiview,swift,uiview,uiviewcontroller,xib,Swift,Uiview,Uiviewcontroller,Xib,我正在尝试使用xib文件中的自定义uiview。我是初学者,不知道从哪里开始。到目前为止,我已经知道了,但是我不知道应该将占位符视图设置为什么 编辑:全视图控制器: import UIKit class Viewcontroller: UIViewController { @IBOutlet weak var placeholderView: UIView! override func viewDidLoad() { super.

我正在尝试使用xib文件中的自定义uiview。我是初学者,不知道从哪里开始。到目前为止,我已经知道了,但是我不知道应该将占位符视图设置为什么

编辑:全视图控制器:

import UIKit

class Viewcontroller: UIViewController {

    
    @IBOutlet weak var placeholderView: UIView!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        placeholderView = view
        
    }
    
    class func instanceFromNib() -> CustomView {
            let view = UINib(nibName: "CustomView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! CustomView
            return view
    }
    

A.让我假设您有一个名为“TestView”的xib文件。也让我假设您有一个名为“TestView”的子类文件
UIView
B.选择您的xib文件。并选择文件的所有者。并将该类设置为TestView(子类文件的名称)。 C.使用Interface Builder打开xib文件。选择“自定义视图”。(在中间窗格中)将此视图连接到您的
UIView
swift文件。例如,将其命名如下@IBVAR自定义视图:NSView! D.此子类文件应具有以下内容

import UIKit

class TestView: UIView {
    @IBOutlet var contentView: UIView!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }
    
    private func commonInit() {
        Bundle.main.loadNibNamed("TestView", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame = self.bounds
    }
}
import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var testView: TestView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
打开故事板。将自定义视图拖放到视图控制器场景中。在identity inspect下,将类名设置为TestView。 F.IBOutlet连接视图控制器中的自定义视图对象,如下所示

import UIKit

class TestView: UIView {
    @IBOutlet var contentView: UIView!
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
    }
    
    private func commonInit() {
        Bundle.main.loadNibNamed("TestView", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame = self.bounds
    }
}
import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var testView: TestView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

仅此而已。

“使用xib文件中的自定义uiview”并不能说明全部情况。该
UIView
对象将在何处以及如何使用?我目前在作为占位符的uiviewcontroller中有一个UIView。我正在尝试用不同的CustomView替换占位符uiview。我试图从第一个customView开始,但当我设置Placeholder View=View时,它并没有改变。这四行代码来自哪里?除非您指定类名,否则其他人将无法知道您在哪里编写代码。我发布了整个viewController NowPlaceholder view=view不做任何事情抱歉没有具体说明,但我最终需要将占位符视图更改为多个不同的customView,这样我就不能只进入故事板,将类更改为一个customView