刷新控件设置为TableViewController即使不将其添加为子视图也可以工作

时间:2017-08-14 08:07:11

标签: ios uitableview uirefreshcontrol

在下面的代码中,创建了一个TableViewController,并设置了tableView和refreshControl属性。但是,即使没有将TableViewController作为子视图添加到View Controller视图,刷新控件也会开始工作。很好奇这是怎么回事?

@IBOutlet weak var dashBoardTableView: UITableView!

let refreshControl = UIRefreshControl()

func configureRefreshControl()
{
    refreshControl.addTarget(self, action: #selector(self.pullToRefresh)  , for: .valueChanged)
    //UIRefreshControl will not work properly without embedding it in a UITableViewController
    let tableViewContainerVC = UITableViewController()
    tableViewContainerVC.tableView = dashBoardTableView
    tableViewContainerVC.refreshControl = refreshControl
}

1 个答案:

答案 0 :(得分:1)

很可能苹果开发者在UITableViewController中做了这样的事情:

var refreshControl:UIRefreshControl {
    didSet{
        //......
        self.tableView.tableHeaderView?.addSubview(refreshControl)
        //......
    }
}

所以RefreshController在tableViewContainerVC.refreshControl = refreshControl

之后立即运行