【发布时间】:2019-04-09 10:06:43
【问题描述】:
我有几个关于笔尖的问题。
- 如何在 View Controller 中动态或以编程方式将 nib 加载到 UIView 上? 我知道您可以通过在此处输入 nib 的 swift 类来添加 nib 的自定义类:
我正在寻找的是如何更改该属性,例如在按下按钮时我想删除或添加它。我尝试实例化 swift 文件,但无法完成。我还尝试更改 .xib 文件的所有者,但它只需要一个 UIView,所以我不能让我的 View Controller 成为它的所有者。我尝试使用
view.addSubiew(view: UIView)
但我不知道如何将我的 Nib 文件正确实例化为 UIView。它一直要求一个 NSCoder,我也不知道如何实例化一个。如果有人能告诉我如何添加和删除有用的自定义类,那将会很有帮助。
如何将数据从 View Controller 传递到 nib?
-
笔尖完全加载后如何运行函数?这是 .xib 文件的 swift 类的代码。
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) if (self.subviews.count == 0) { guard let view = loadViewFromNib() else {return} view.frame = self.bounds self.addSubview(view) mainView = view -> btn.layer.cornerRadius = 5 } } private func loadViewFromNib() -> UIView? { let bundle = Bundle(for: type(of: self)) let nib = UINib(nibName: "NibFile", bundle: bundle) return nib.instantiate(withOwner: self, options: nil).first as? UIView }
这可以很好地加载视图,但是每当我尝试在代码块中运行其他任何内容时,例如标记的位置(我想在加载视图后更改按钮的角半径),我总是得到一个 nil IBOutlet .它只是一直说按钮为零。我在哪里添加这个功能?
我也试过这样做:
override func awakeFromNib() {
btnLogin.layer.cornerRadius = 5
}
仍然没有,我在这里感到困惑,研究走到了死胡同,或者只是我不需要的东西。任何帮助将不胜感激。谢谢!
【问题讨论】:
-
1-) 此博客可以作为创建自定义视图的良好起点。 medium.com/@brianclouser/… 2-) 传递数据的一个选项可以是您在自定义视图中创建的任何方法。 3-) 对于 awakeFromNib,您可以查看:stackoverflow.com/a/31993253/4484349
-
会检查这些。谢谢@alitosuner!