我正在尝试使用Swift 4创建一个应用。
如果我的单元格数据的API计数为0,则该表的目的是使用UITableViewCell.SelectionStyle.none
。
后来,我用UIRefreshControl()
通过拉下表来刷新数据。
但是每当我下拉表格时,数据都会刷新,但是单元格的样式不会改变。
我已经尝试过reloadData()
,但是它不起作用。该函数不会重新加载cellForRowAt
。
这是我的cellForRowAt
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "custom") as! AppsCustomCell
cell.imglink = data[indexPath.row].imglink
cell.title = data[indexPath.row].AppName
cell.subtitle = data[indexPath.row].AppDesc
cell.count = String(data[indexPath.row].count)
cell.backgroundColor = UIColor.clear
cell.layoutSubviews()
if data[indexPath.row].boolPress == 0 || data[indexPath.row].count < 1 {
// if false {
cell.selectionStyle = UITableViewCell.SelectionStyle.none
cell.contentView.isOpaque = false
cell.mainImageView.alpha = 0.5
cell.titleView.alpha = 0.5
cell.subtitleView.alpha = 0.5
cell.count = "0"
} else {
cell.count = String(data[indexPath.row].count)
cell.countView.backgroundColor = UIColor.red
cell.countView.textColor = UIColor.white
}
return cell
}
我希望每当我使用刷新拉动时重新加载整个表格,包括单元格的样式
编辑:这是我刷新表格的方式
@IBOutlet weak var tableView: UITableView!
var refreshControl = UIRefreshControl()
override func viewDidLoad() {
refreshControl.addTarget(self, action: #selector(refresh), for: UIControl.Event.valueChanged)
tableView.addSubview(refreshControl) // not required when using UITableViewController
}
@objc func refresh() {
// Insert code here to get data from the API.
self.tableView.reloadData()
self.refreshControl.endRefreshing()
}
编辑:这是用户界面中的结果
这里是tableView,如果我使用UIRefreshControl()
拉下桌子
答案 0 :(得分:0)
您以错误的方式将刷新控件添加到表视图。请尝试以下:
override func viewDidLoad() {
super.viewDidLoad()
refreshControl.addTarget(self, action: #selector(refresh), for: UIControl.Event.valueChanged)
tableView.refreshControl = refreshControl
}
此外,当计数大于0时,请设置选择样式。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "custom") as! AppsCustomCell
cell.imglink = data[indexPath.row].imglink
cell.title = data[indexPath.row].AppName
cell.subtitle = data[indexPath.row].AppDesc
cell.count = String(data[indexPath.row].count)
cell.backgroundColor = UIColor.clear
cell.layoutSubviews()
if data[indexPath.row].boolPress == 0 || data[indexPath.row].count < 1 {
// if false {
cell.selectionStyle = UITableViewCell.SelectionStyle.none
cell.contentView.isOpaque = false
cell.mainImageView.alpha = 0.5
cell.titleView.alpha = 0.5
cell.subtitleView.alpha = 0.5
cell.count = "0"
} else {
cell.selectionStyle = .default
cell.count = String(data[indexPath.row].count)
cell.countView.backgroundColor = UIColor.red
cell.countView.textColor = UIColor.white
cell.mainImageView.alpha = 1.0
cell.titleView.alpha = 1.0
cell.subtitleView.alpha = 1.0
}
return cell
}