UI 未显示新控件



我的UIViewController中有一个UITableView。我正在尝试设置 UIRefreshControl 拉动刷新功能。下面是我的代码。

// Within Class Itself
lazy var refreshControl: UIRefreshControl = {
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action:
        #selector(MainViewController.refreshData),
                             for: .valueChanged)
    refreshControl.tintColor = UIColor.darkGray
    return refreshControl
}()
// Within viewDidLoad
if #available(iOS 10.0, *) {
    myTableView.refreshControl = refreshControl
} else {
    myTableView.addSubview(refreshControl)
}

但是每当我尝试在模拟器中运行它并在表视图上向下拖动时,没有任何反应,也不会显示任何内容。就像拉动刷新的东西没有添加到表视图中一样。

我该如何解决这个问题?

根据我的理解,发生这种情况是因为您使用延迟初始化声明了 refreshControl。并且您正在从表视图的外部向表视图添加刷新控件。

懒惰会延迟您的刷新控件初始化,但在此之前,刷新控件将被添加到表视图中,但此处刷新控件为空。所以它不起作用。

尝试删除惰性,直接初始化(如下所示)。我希望它会起作用。

    var refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action:
        #selector(MainViewController.refreshData),
                             for: .valueChanged)
    refreshControl.tintColor = UIColor.darkGray
// Within viewDidLoad
if #available(iOS 10.0, *) {
    myTableView.refreshControl = refreshControl
} else {
    myTableView.addSubview(refreshControl)
}

最新更新