如何确定 UIView 是不是已加载 [重复]

Posted

技术标签:

【中文标题】如何确定 UIView 是不是已加载 [重复]【英文标题】:How to determine if UIView has loaded [duplicate]如何确定 UIView 是否已加载 [重复] 【发布时间】:2017-07-31 07:00:44 【问题描述】:

我目前正在创建自定义视图。这个视图有一个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的委托

【问题讨论】:

【参考方案1】:

现在,在这个类中,我需要获取 UITableView 的委托,但这只能在加载视图后发生

我不完全确定你的意思。视图MyView 被加载,如果你在它的一个方法中。如果该类不存在,则不能调用它的方法。因此,如果您在initWithFrame: 中进行配置,一切都应该没问题。

否则我唯一能想到的就是如果您的视图在 Interface Builder 中布局并因此将被解码。在这种情况下,虽然视图可能已经加载,但某些引用可能尚未加载。为此,您将在所有解码完成后接到awakeFromNib 的电话。

【讨论】:

【参考方案2】:

//你可以试试这些

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

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

    override func didMoveToSuperview() 
        super.didMoveToSuperview()
    

【讨论】:

以上是关于如何确定 UIView 是不是已加载 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

检查图像是不是已完全加载[重复]

用于确定数组元素是不是已存在的Javascript函数[重复]

如何检查图像是不是已成功预加载? [复制]

UIView的不透明度和alpha是不是相同[重复]

如何确定变量是不是未定义[重复]

如何确定客户端是不是是触摸设备[重复]