我有一个名为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()
目前我正在使用导航控制器。因此,我只需通过来回导航即可更新我的表格。然而,我想要做的是,我想在用户滚动到顶部时重新加载我的表数据。
任何想法我怎么可能这样做? 谢谢:)
答案 0 :(得分:0)
答案 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:
方法即可。
如果您仍然遇到任何问题,请告诉我。快乐的编码..