2017-07-25 88 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

相關問題