在初始化之前设置 CustomView 委托
Set CustomView delegate before init
虽然我可以在我的 CustomView class 中创建一个 func setImages ()
并在初始化后调用它 myCustomView
,但我想了解是否有更简洁的方法来设置视图的委托初始化时可以访问。
我的主要 ViewController 包含
class Main: UIViewController, CustomViewDelegate {
var imagesArray:[UIImage] = [Image1,Image2,Image3,Image4,Image5]
var myCustomView = CustomView()
override func viewDidLoad() {
super.viewDidLoad()
myCustomView.delegate = self
myCustomView = CustomView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
//this causes init of CustomView, but delegate is now nil and button images don't load
}
}
我的 CustomView 文件包含
var buttonsArray = [Button1,Button2,Button3,Button4,Button5]
override init(frame: CGRect) {
super.init(frame : frame)
for n in 0..< buttonsArray.count {
buttonsArray[n].setImage(delegate?.imagesArray[n], for: .normal)
}
}
您可以创建一个新的初始化程序,它采用 frame 和 delegate 类型,并在将图像设置为按钮之前设置委托
init(frame: CGRect,sender: CustomViewDelegate) {
super.init(frame : frame)
self.delegate = sender
for n in 0..< buttonsArray.count {
buttonsArray[n].setImage(delegate?.imagesArray[n], for: .normal)
}
}
为此,您必须为委托确认您的 viewController(显然)。在 viewController 中像这样调用您的 customView:
class ViewController: UIViewController, CustomViewDelegate {
var myCustomView: CustomView!
override func viewDidLoad() {
myCustomView = CustomView(frame: self.view.bounds, sender: self)
}
}
希望对您有所帮助!
虽然我可以在我的 CustomView class 中创建一个 func setImages ()
并在初始化后调用它 myCustomView
,但我想了解是否有更简洁的方法来设置视图的委托初始化时可以访问。
我的主要 ViewController 包含
class Main: UIViewController, CustomViewDelegate {
var imagesArray:[UIImage] = [Image1,Image2,Image3,Image4,Image5]
var myCustomView = CustomView()
override func viewDidLoad() {
super.viewDidLoad()
myCustomView.delegate = self
myCustomView = CustomView(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
//this causes init of CustomView, but delegate is now nil and button images don't load
}
}
我的 CustomView 文件包含
var buttonsArray = [Button1,Button2,Button3,Button4,Button5]
override init(frame: CGRect) {
super.init(frame : frame)
for n in 0..< buttonsArray.count {
buttonsArray[n].setImage(delegate?.imagesArray[n], for: .normal)
}
}
您可以创建一个新的初始化程序,它采用 frame 和 delegate 类型,并在将图像设置为按钮之前设置委托
init(frame: CGRect,sender: CustomViewDelegate) {
super.init(frame : frame)
self.delegate = sender
for n in 0..< buttonsArray.count {
buttonsArray[n].setImage(delegate?.imagesArray[n], for: .normal)
}
}
为此,您必须为委托确认您的 viewController(显然)。在 viewController 中像这样调用您的 customView:
class ViewController: UIViewController, CustomViewDelegate {
var myCustomView: CustomView!
override func viewDidLoad() {
myCustomView = CustomView(frame: self.view.bounds, sender: self)
}
}
希望对您有所帮助!