Storyboard和xib不显示新添加的元素

时间:2016-11-17 12:26:43

标签: ios swift xcode storyboard xib

更新到Xcode 8.1之后,我们的故事板和xib就像往常一样。如果我们创建一个新的xib / view / storyboard,我们就无法在新视图中看到新添加的元素。

这两个都是xib文件。左侧是为更新而创建的,右侧是在更新后创建的。你不能看到按钮尽管它在所有东西之上并且有禁止填充视图。它还有文本内容,没有大小的类。 enter image description here

我知道有很多问题可以解释这可能是规模化的课程。

why storyboard ui elements not showing on UIViewController in xcode 6?

Storyboard UI Elements not displaying in editor

如果我们向其添加新元素,则它们直接不可见。还将新的ViewController添加到" old"如果我们向其添加元素,它就不会显示其内容。

这里发生了什么,我该如何解决?

2 个答案:

答案 0 :(得分:2)

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

  1. TopView.xib ,在文件所有者中设置TopView类 TopView in Xcode
  2. TopView.swift
  3.  
    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 Custom class for UIView

      

    如果 TopView 没有 故事板,那么(通常会发生这种情况):

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

      还是?

      1. 清理项目:⌘+ K
      2. 构建项目⌘+ B
      3. 故事板中的结果: Storyboard Result of TopView

        p.s我只是从我的答案中复制这个:Custom view (xib) not visible on storyboard

答案 1 :(得分:-1)

1。打开Xib / Storyboard

2. 选择文件属性标签(位于最左侧)

file attributes tab

3。点击"在"中打开属性并将其从Xcode 8更改为Xcode 7

opens in property