2017-07-31 95 views
0

我目前正在創建自定義視圖。這個視圖有一個UITableView。該控件的委託將成爲自定義控件的後備類。如何確定UIView是否已加載

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的委託,但一旦視圖已經被加載,只能發生(否則autoCompleteViewnil)。

如果它在UIViewController我可以簡單地將它添加到viewDidLoad但我沒有在這裏打開。所以,我怎麼能去在一些點這裏現在設定的委託爲UITableView

回答

1

,在這個類中,我需要爲UITableView的委託,但只能發生一次的觀點已經被加載

我不完全確定你的意思。如果您在其中的某個方法內部加載視圖MyView。如果這個類不在那裏,它就不能調用它的方法。所以如果你在initWithFrame:配置的東西應該沒事。

我唯一能想到的就是如果你的視圖放在界面生成器中並因此被解碼。在這種情況下,儘管視圖可能已經被加載,但一些引用可能不是。爲此,在所有解碼完成後,您將收到awakeFromNib的電話。

0

//你可以試試這些

class MyView: UIView { 
    @IBOutlet weak var autoCompleteView: UITableView! 

    override func willMove(toSuperview newSuperview: UIView?) { 
     super.willMove(toSuperview: newSuperview) 
    } 

    override func didMoveToSuperview() { 
     super.didMoveToSuperview() 
    } 
}