我试图在tableHeaderView
中设置numberOfRowsInSection
。但是我在输出控制台中没有收到EXC_BAD_ACCESS
消息。
以下是我的numberOfRowsInSection
功能。
// number of rows in table view
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
//SECTION 1
if self.titles.count == 0 {
self.noBookmarkView.alpha = 1.0
}
else {
self.noBookmarkView.alpha = 0.0
}
//=====================================
//SECTION 2
if self.idsb.count != self.ids.count {
self.bookmarkTableView.tableHeaderView = self.filteredView
}
else {
self.bookmarkTableView.tableHeaderView = nil
}
//=====================================
return self.titles.count
}
以下是我viewDidLoad
我初始化filteredView
@IBOutlet weak var noBookmarkView: UIView!
var filteredView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
filteredView = UIView.init(frame: CGRect.init(x: 0, y: 0, width: bookmarkTableView.frame.width, height: 25))
filteredView.backgroundColor = UIColor.init(red: 0.4, green: 0.4, blue: 0.71, alpha: 1.0)
let label: UILabel = UILabel.init(frame: filteredView.frame)
label.text = "Filtered"
label.font = UIFont.init(name: "System", size: 14.0)
label.adjustsFontSizeToFitWidth = true
filteredView.addSubview(label)
}
所以在我添加filteredView
之前,它与noBookmarkView
完美配合。
现在EXC_BAD_ACCESS
上出现错误self.noBookmarkView.alpha = 0.0
。如果我发表评论SECTION 2
,它可以正常运行。如果我发表评论SECTION 1
,则EXC_BAD_ACCESS
就行self.bookmarkTableView.tableHeaderView = nil
。
我不明白为什么self.noBookmarkView.alpha = 0.0
出现SECTION 2
时导致问题的原因会失败。
我该如何解决这个问题?
答案 0 :(得分:1)
您应该通过dataSource
:
UITableView
提供标题
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
return self.filteredView
}
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 25
}