繁体   English   中英

自定义视图(xib)在情节提要板上不可见

[英]Custom view (xib) not visible on storyboard

我有一个自定义视图xib ,其中有多个TableViews 我将其作为嵌套视图加载到ViewController中:

ViewController
   |_ View
       |_ View (This is where I load my Custom View)

运行我的应用程序时,我可以在屏幕上看到空表,因此我的xib正确加载。
到现在为止还挺好。

我的问题是,我无法在情节提要中看到我的桌子。 因此,我无法按ctrl +拖动并继续进行操作。

如何在情节提要视图中看到我的自定义视图?

例如,我们有TopView (我的CustomView):

  1. TopView.xib ,在文件的所有者中设置TopView类

    Xcode中的TopView

  2. TopView.swift

注意:不要忘记@IBDesignable标记。

import UIKit
@IBDesignable
class TopView: UIView {

    //MARK:- IB Outlets
    var contentView:UIView?

    //MARK:- Lifecycle
    override func awakeFromNib() {
        super.awakeFromNib()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setupThisView()
    }

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

    override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        setupThisView()
        contentView?.prepareForInterfaceBuilder()
    }

    //MARK:- Lifecycle methods
    private func setupThisView(){
        guard let view = loadViewFromNib() else { return }
        view.frame = bounds
        view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        addSubview(view)
        contentView = view
    }

    func loadViewFromNib() -> UIView? {
        let nibName = String(describing: TopView.self)
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: nibName, bundle: bundle)
        return nib.instantiate(withOwner: self,options: nil).first as? UIView
    }
}

3,在Storyboard中添加 UIView并将视图的类设置为TopView

UIView的自定义类

如果冠捷没有出现在故事板则(这种情况通常情况下):

  1. 启用编辑器->自动刷新视图
  2. 单击编辑器 -> 刷新所有视图

仍然?

  1. 清理项目: ⌘+ K
  2. 建立项目⌘+ B

情节提要中的结果: TopView的情节提要结果

情节提要只能包含ViewControllers和Segues。 如果要从ViewController访问xib中的内容以设置委托等,则必须从代码中进行操作。 例如,当目标ViewController在情节提要中且UITableView在另一个xib中时,您不能在IB中设置UITableView的委托。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM