我对笔尖有一些疑问。
我要寻找的是如何更改该属性,例如在按钮上按下我想删除或添加的属性。我尝试实例化swift文件,但无法将其删除。我还尝试过更改.xib文件的所有者,但它只需要一个UIView,因此无法将View Controller设置为其所有者。我尝试使用
view.addSubiew(view: UIView)
但是我不知道如何正确地将Nib文件实例化为UIView。它一直在问一个NSCoder,我也不知道如何实例化一个。如果有人告诉我如何添加和删除自定义类,这会有所帮助。
如何将数据从View Controller传递到笔尖?
笔尖完全加载后,如何运行函数?这是.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 。它只是一直说该按钮为nil。在哪里添加此功能?
我也尝试这样做:
override func awakeFromNib() {
btnLogin.layer.cornerRadius = 5
}
仍然为零,我在这里感到困惑,研究陷入僵局或只是我不需要的东西。任何帮助将不胜感激。谢谢!
答案 0 :(得分:0)
所以我做了很多测试,并提出了以下建议:
我删除了所需的init吗?从笔尖的功能,只需在视图控制器中对其进行初始化。基本上,我将代码从所需的init加载到了nib文件中?功能到我想加载它的任何地方,例如某个视图控制器上的按钮按下事件。我只是添加这个:
func loadView(nibName: String, uiview: UIView) {
let view: UIView = Bundle.main.loadNibNamed(nibName, owner: self, options: nil)?[0] as! UIView
view.frame = uiview.bounds
view.autoresizingMask = [.flexibleHeight, .flexibleWidth]
uiview.addSubview(view)
}
uiview是我要向其中添加笔尖的视图。
我在笔尖中调用一个函数,并将数据作为参数传递。
如果我做的是第一个问题,那么我可以在
中运行任何功能override func awakeFromNib() {
}
它在笔尖加载后运行。