我正在一個項目上有UITableView
和UISwitch
headerview。以下是我的代碼標題視圖。我已經嘗試了不同的問題,關於headerview上的按鈕點擊事件,但沒有一個解決方案似乎工作。在UITableView的headerview中的UISwitch正在改變狀態,但沒有調用事件處理方法
如果有幫助,我設置了UITableView
標題高度。
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 100;
}
這是我的標題代碼。
class NotificationSettingsTableHeaderView : UIView, ViewProtocol {
//other controls
var mainSwitch : UISwitch!
var contentView : UIView!
weak var temp: SettingCellDelegate?
func handle(sender: UISwitch) {
// ----------- THIS METHOD IS NOT GETTING CALLED ------------
if(sender.isOn){
print("IS ON")
}
else{
print("IS OFF")
}
}
override init(frame: CGRect) {
super.init(frame: frame)
addSubviews()
makeConstraints()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func addSubviews() {
contentView = UIView()
// Other control initialization
mainSwitch = UISwitch()
mainSwitch.addTarget(self, action: #selector(NotificationSettingsTableHeaderView.handle(sender:)), for: UIControlEvents.valueChanged)
contentView.addSubview(mainSwitch)
}
func makeConstraints() {
let screen = UIScreen.main.bounds
contentView.frame = CGRect(x: 0, y: 0, width: screen.width, height: 80)
mainSwitch.snp.makeConstraints { (make) in
make.centerY.equalTo(contentView)
make.right.equalTo(contentView).offset(-10)
}
// other code
}
}
被修改
我加入內容查看使用以下代碼來報頭。
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView {
let cell = NotificationSettingsTableHeaderView()
let cat = preferenceSection.allSections[section]
cell.label.text = cat.getTitle()
cell.descLabel.text = cat.getSubtitle()
return cell.contentView
}
你*眼看*了'UISwitch'在頭看法?你在標題視圖中看到*任何*嗎?我沒有看到你在哪裏添加'contentView'到標題視圖... – DonMag
是的,我能夠看到整個標題視圖。我甚至可以點擊'UISwitch'並打開/關閉它。 @DonMag – Pooja
@DonMag請檢閱我編輯的問題。 – Pooja