滚动到最高点时更新tableView?

时间:2018-03-19 06:42:23

标签: swift xcode uitableview scrollview

enter image description here我有一个名为challengeTable的表格视图。该表包含图像,一些文本和一个按钮。这些值是从RESTFUL API中检索的。

var Sec1 = [[String]]()

    public func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String?{
    return sectionTitles[section]

    }
    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        switch section {
        case 0 :
            return Sec1.count
        default:
            return Sec2.count

        }

    }
    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
        let cell = challengeTable.dequeueReusableCell(withIdentifier: cellID) as! CustomisedCell
        cell.selectionStyle = .none

        switch indexPath.section {
        case 0:

            cell.CAChallengeTitle.text = Sec1[indexPath.row][0]
            cell.CAChallengeTitle.font = UIFont.boldSystemFont(ofSize: 13)
            cell.CAChallengeDescription.text = "Starting Date: \(Sec1[indexPath.row][1]) \n\n Ending Date: \(Sec1[indexPath.row][2])"
            cell.CAChallengeDescription.numberOfLines = 3
            cell.CAChallengeIMG.image = UIImage(named : "Step" )
            cell.CAChallengeButt.tag = indexPath[1]
            cell.CAChallengeButt.setTitle("Detsils >", for: .normal)
            print("Done with sectoin 0")
        default:
            cell.CAChallengeTitle.text = Sec2[indexPath.row]
            cell.CAChallengeDescription.text = "\(Sec2[indexPath.row])  "
            cell.CAChallengeButt.tag = indexPath[1]
            cell.CAChallengeButt.setTitle("I am interested >", for: .normal)
            print("Done with sectoin 1")

        }
       return cell

    }

我可以通过调用以下内容重新加载表的数据:

Sec1.removeAll() 
challengeTable.reloadData()

目前我正在使用导航控制器。因此,我只需通过来回导航即可更新我的表格。然而,我想要做的是,我想在用户滚动到顶部时重新加载我的表数据。

任何想法我怎么可能这样做? 谢谢:)

2 个答案:

答案 0 :(得分:0)

听起来更像是需要分页/延迟加载

这是你想要实现的目标吗?

Reference 1

Reference 2

答案 1 :(得分:0)

UIRefreshControl 是满足您要求所需的。

  

可以启动表视图刷新的标准控件   内容。

     

除了为表视图分配刷新控件外   controller的refreshControl属性,必须配置目标   和控制本身的行动。控件没有启动   直接刷新操作。相反,它发送valueChanged事件   何时应该进行刷新操作。您必须分配一个动作   此事件的方法,并使用它来执行任何操作   需要的。

只需向refreshControl添加UITableView,并在reloadData发送tableView's事件时,在refreshControl对象上致电valueChanged,即

override func viewDidLoad()
{
    super.viewDidLoad()
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: #selector(reloadTable), for: .valueChanged)
    self.tableView.refreshControl = refreshControl
}

@objc func reloadTable()
{
    self.tableView.reloadData()
    self.tableView.refreshControl?.endRefreshing()
}

UIRefreshControl本身不知道何时应隐藏它。要隐藏控件,只需调用endRefreshing:方法即可。

如果您仍然遇到任何问题,请告诉我。快乐的编码..