我对发件人标题有疑问。我有一个按钮,我想根据某些条件更改标题。在这一点上,我制作了sender.setTitle()代码,但标题仅出现了0.5秒。它不可见,让我说得更清楚。我该如何解决? 这是我的代码:
@objc func handleExpandCloseForAlim(sender: UIButton) {
if (sender.tag == 1) {
if keys[0] == 0 {
sender.setTitle("titlesample", for: .normal)
keys[0] = 1
}else{
keys[0] = 0
sender.setTitle("titlesampleclose", for: .normal)
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
这是我的标题视图代码:
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 100))
// code for adding centered title
headerView.backgroundColor = .lightGray
let headerLabel = UILabel(frame: CGRect(x: 0, y: 10, width: tableView.bounds.size.width, height: 28))
headerLabel.textColor = UIColor.black
headerLabel.text = " Teslim Alınacağı Adres"
headerLabel.font = UIFont.boldSystemFont(ofSize: 14)
headerLabel.textAlignment = .left
headerView.addSubview(headerLabel)
// code for adding button to right corner of section header
let button: UIButton = UIButton(frame: CGRect(x:headerView.frame.size.width - 100, y:8, width:100, height:28))
button.setTitleColor(.black, for: .normal)
button.titleLabel!.font = UIFont.boldSystemFont(ofSize: 14)
button.layer.cornerRadius = 4
button.tag = 1
button.backgroundColor = UIColor.blue
button.addTarget(self, action: #selector(handleExpandCloseForAlim(sender:)), for: .touchUpInside)
headerView.addSubview(button)
return headerView
答案 0 :(得分:1)
上面的代码中有问题的部分是您要在 handleExpandCloseForAlim 中重新加载表格视图。由于tableView已重新加载,它将在您返回没有标题的headerView的地方调用tableView中的 viewForHeaderInSection 函数。这就是为什么您的标签不见了。
您可以通过将按钮标签作为ViewController中的字段来解决此问题。示例代码可能如下所示。
class YourViewController: UITableViewController {
var buttonLabel: String = "titlesampleclose"
.......
}
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 100))
// code for adding centered title
headerView.backgroundColor = .lightGray
.........
.........
button.setTitle(buttonLabel,for: .normal)
button.addTarget(self, action: #selector(handleExpandCloseForAlim(sender:)), for: .touchUpInside)
headerView.addSubview(button)
return headerView
@objc func handleExpandCloseForAlim(sender: UIButton) {
if (sender.tag == 1) {
if keys[0] == 0 {
self.buttonLabel = "titlesample"
keys[0] = 1
}else{
keys[0] = 0
self.buttonLabel = "titlesampleclose"
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
希望有帮助。