ios - Swift 3 - 从另一个类中的 XIB 实例访问变量

标签 ios swift xib

几天来我一直在努力解决这个问题,但运气不佳:(

我想要做的是在 XIB(称为 BottomNav)实例中设置变量,该实例已经存在于另一个名为“curX”的 ViewController 中。我最接近以下内容:

class Util: NSObject {
    class func loadNib() {
        let nib: BottomNav = Bundle.main.loadNibNamed("BottomNav", owner: self, options: nil)!.first as! BottomNav
        nib.curX = 10
    }
}

这是 BottomNav 类:

class BottomNav: UIView {
    @IBOutlet var view: UIView!
    @IBOutlet weak var homeBtn: UIView!
    @IBOutlet weak var scroller: UIScrollView!
    @IBOutlet weak var scrollerContent: UIView!

    var curX = 32

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!

        Bundle.main.loadNibNamed("BottomNav", owner: self, options: nil)
        self.addSubview(self.view)
    }

}

这通过了编译器,没有任何警告,但是当它运行时,我得到一个“这个类不是键的键值编码兼容”错误。这通常在有一个不再存在的导出时出现,但绝对不是这种情况,我已经使用应用程序上已有的多个 XIB 对其进行了测试,并且首先通过 Storyboard加载没有问题。我只在使用“loadNibNamed”时遇到此错误。

我在这里走的路是否正确?我的想法是,也许我的 Util 类无法访问 Bundle 或其他东西?

最佳答案

class BottomNav: UIView {
    @IBOutlet var view: UIView!
    @IBOutlet weak var homeBtn: UIView!
    @IBOutlet weak var scroller: UIScrollView!
    @IBOutlet weak var scrollerContent: UIView!

    var curX = 32

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

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

    func commonInit(){

        Bundle.main.loadNibNamed("BottomNav", owner: self, options: nil)
        guard let content = view else { return }
        content.frame = self.bounds
        content.autoresizingMask = [.flexibleHeight, .flexibleWidth]
        self.addSubview(content)
    }

}

并且在调用实例时,尝试以下操作。

        let instance = BottomNav()
        instance.curX = 30

关于ios - Swift 3 - 从另一个类中的 XIB 实例访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43731387/

相关文章:

ios - 当 UITableView 完全重新加载时

ios - 在方法之外获取值(value)

ios - 如何为itunes中的应用程序添加图标?

ios - 为什么已删除的文件在新写入文件后又会回来? swift 2.0

ios - 亚马逊 Cognito 与 SwiftUI

ios - 右约束在 iphone SE 上无法正常工作

ios - 如何在 Swift 中将小数截断到 x 位

swift - 为什么 SKLabelNode 在 Contact 上增加太多? ( swift )

ios - iOS 中的 Xcode 类名不带应用程序名称前缀

ios - NSUnknownKeyException 即使定义了导出