如果我的视图控制器不可滚动,我可以进行“拉动刷新”操作吗?

时间:2018-02-08 08:09:28

标签: ios swift uiviewcontroller uiscrollview pull-to-refresh

我有一个UIViewController,在viewDidLoad我从服务器检索员工数据。但有时我们可能有互联网连接问题,不幸的是下一步取决于这个员工数据。所以在做segue到下一个视图控制器之前,我必须确保这个员工数据不是nil。

发生连接问题时,此员工数据将为零。此时我将指示用户执行“拉动刷新”。我试图在我的视图控制器中实现pull to refresh,但由于UIViewController不可滚动,所以它不起作用。

我可以在UIViewController中实现pull to refresh吗?

因为我认为只需拉动刷新就更容易,然后按下只出现刷新的'特殊按钮'来获取emlpoyee数据。还是有更好/更常见的方法来解决这个问题?

TableViewController中的

拉动刷新是这样的,但在UIViewController

中怎么样
class TableViewController: UITableViewController {


    var arrayNumber = [1,2,3,4]
    var refresher : UIRefreshControl! = nil

    override func viewDidLoad() {
        super.viewDidLoad()

        refresher = UIRefreshControl()
        refresher.attributedTitle = NSAttributedString(string: "please pull to refresh")
        refresher.addTarget(self, action: #selector(TableViewController.populateTableView), for: UIControlEvents.valueChanged)


        tableView.addSubview(refresher)




    }



    @objc func populateTableView() {
        for i in 1...100 {
            arrayNumber.append(i)
        }

        tableView.reloadData()
        refresher.endRefreshing() 
    }




    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return arrayNumber.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "tabCell", for: indexPath)


        cell.textLabel?.text = String(arrayNumber[indexPath.row])

        return cell

    }


}

1 个答案:

答案 0 :(得分:1)

我在之前的项目中实现过类似的东西。不幸的是,UIRefresh Control仅适用于UIScrollView固有的对象。

但话虽如此,我只是创建了一个自定义视图,其中包含UIActivityView和(您想象的其他任何想法)。然后在ViewController中我们添加了一个滑动手势,它将显示我们的自定义视图。

为了获得与UIRefreshControl相同的视觉效果,我还想提一下,您可以将自定义视图添加为viewControllers视图的子视图,并将y:value设置为子视图高度。然后,当用户向下滑动时,您可以设置no such element: Unable to locate element: {"method":"xpath","selector":"//a[text()="104"]"} 的动画,这会导致主视图显示为向下滚动,用户滑动并显示自定义刷新控件。