用 TableView 的代理方法添加的header点击第一个不触发事件,但是点击第二个header触发了第二

iOS 码拜 9年前 (2016-03-30) 2064次浏览
直接上添加 header 的代码吧:

    func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{
        let cellID = "headerCell"
        var headerCell = tableView.dequeueReusableCellWithIdentifier(cellID)
            as? HeaderCell
        headerCell?.backgroundColor = UIColor.greenColor()
        if(headerCell == nil){
            headerCell = HeaderCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: cellID)
        }
        
        switch section {
        case 0:
            headerCell!.headerLabel.text = "模式"
            break
        case 1:
            headerCell!.headerLabel.text = "风速"
            break
        default:
            headerCell!.headerLabel.text = "other"
            break
        }
        
        return headerCell!
    }

用 TableView 的代理方法添加的header点击第一个不触发事件,但是点击第二个header触发了第二
如图,绿色部分为header,点击第一个不会触发cell的事件,但是点击第二个和之后的header会触发当前组第一个cell的点击事件,望高手们看看到底哪里出了问题,谢谢(实在是没分数了,仅有20分,请包涵)

解决方案

20

HeaderCell不要继承自UITableViewCell,所以也不要调用dequeueReusableCellWithIdentifier方法来获取HeaderCell;
解决方案:
让你的HeaderCell继承UITableViewHeaderFooterView,然后调用dequeueReusableHeaderFooterViewWithIdentifier方法获取HeaderCell

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明用 TableView 的代理方法添加的header点击第一个不触发事件,但是点击第二个header触发了第二
喜欢 (0)
[1034331897@qq.com]
分享 (0)