我目前正在创建自定义视图。这个视图有一个UITableView
。此控件的委托将是自定义控件的支持类。
class MyView: UIView {
@IBOutlet weak var autoCompleteView: UITableView!
}
extension MyView: UITableViewDelegate {
}
extension MyView: UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath as IndexPath)
cell.textLabel!.text = "\(indexPath.row) - Its working"
return cell
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
}
现在在这里,在这个类中,我需要获取UITableView
的委托,但只有在加载视图后才会发生(否则autoCompleteView
将为nil
})。
如果它在UIViewController
中,我只需将其添加到viewDidLoad
,但我在这里没有打开。那么我该如何设置UITableView
答案 0 :(得分:1)
现在在这里,在这个类中,我需要获取UITableView的委托,但这只能在视图加载后才会发生
我不完全确定你的意思。如果您在其中的方法内部,则会加载视图MyView
。如果该类不在那里,则无法调用它的方法。因此,如果您在initWithFrame:
中配置内容,一切都应该没问题。
我唯一能想到的是,如果您的视图在Interface Builder中布局,那么将被解码。在这种情况下,虽然可能已加载视图,但某些引用可能不会。为此,在完成所有解码后,您将收到awakeFromNib
的呼叫。
答案 1 :(得分:0)
//你可以尝试这些
class MyView: UIView {
@IBOutlet weak var autoCompleteView: UITableView!
override func willMove(toSuperview newSuperview: UIView?) {
super.willMove(toSuperview: newSuperview)
}
override func didMoveToSuperview() {
super.didMoveToSuperview()
}
}