【问题标题】:Storyboard and xib do not show freshly added elements故事板和 xib 不显示新添加的元素
【发布时间】:2017-03-31 23:51:05
【问题描述】:

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

这两个都是 xib 文件。左边是更新前创建的,右边是更新后创建的。即使按钮位于所有内容之上并且具有填充视图的约束,您也看不到该按钮。它也有文本内容和没有大小的类。

我知道有很多问题可以解释这可能是大小类。

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

Storyboard UI Elements not displaying in editor

如果我们向其中添加新元素,它们将直接不可见。还将新的 ViewController 添加到“旧”情节提要中,如果我们向其中添加元素,它不会显示其内容。

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

【问题讨论】:

    标签: ios swift xcode storyboard xib


    【解决方案1】:

    1.打开 Xib/Storyboard

    2.选择文件属性选项卡(在最左侧)

    3.单击“opens in”属性并将其从 Xcode 8 更改为 Xcode 7

    【讨论】:

    • 我想这样做,但如果我重新打开该文件,它会再次选择代码 8.0。除此之外,这个答案并没有解释为什么旧的 Storyboards/xib 可以在选择 Xcode 8 的情况下工作。
    【解决方案2】:

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

    1. TopView.xib,在File's Owner中设置TopView类
    2. TopView.swift

     
    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

    如果 TopView 尚未出现在 Storyboard 中,那么(这通常会发生):

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

    还是?

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

    故事板中的结果:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      相关资源
      最近更新 更多