2017-07-25 95 views
1

我在为我的tableView创建一个customHeader时遇到了一个奇怪的问题。那我收到的错误是:笔尖必须包含一个顶级对象,它必须是一个UITableViewHeaderFooterView实例

笔尖必须包含

我通过我的代码和厦门国际银行文件以及实例运行,但我无法找到任何错误必须是一个UITableViewHeaderFooterView实例只有一个顶层对象我错过了什么想法?

头XIB用常规视图创建并与下列然后用标记的子图,被创建的类:

CustomTableHeader类别:

class CustomTableHeader: UITableViewHeaderFooterView { 
    static var CustomTableHeaderIdentifier = "CustomTableHeader" 
    @IBOutlet weak var titleLabel: UILabel! 

    override awakeFromNib(){ 
     super.awakeFromNib() 
     self.titleLabel.text = "Header" 
    } 

    override func prepareForReuse() { 
     super.prepareForReuse() 
    } 
} 

的ViewController类:

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 
    @IBOutlet weak var tableView: UITableView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tableView.register(UINib.init(nibName: CustomTableHeader.CustomTableHeaderIdentifier, bundle: nil), forHeaderFooterViewReuseIdentifier: CustomTableHeader.CustomTableHeaderIdentifier) 
    } 


    //Other Methods 
    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
     if let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: CustomTableHeader.CustomTableHeaderIdentifier) as? CustomTableHeader { 
      header.titleLabel.text = "Section 1" 
      return header 
    } 
} 

回答

9

我想通了我的问题!以防万一遇到这种情况,请确保您的第一个视图是XIB文件中唯一的对象。例如在我的例子中,我试图给标题视图添加一个手势,这也被认为是一个对象。如果你想添加一个手势,你可以这样做以编程方式:

addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(/* FUNCTION */))) 
+2

有完全相同的问题,谢谢! – derf26

相关问题