Xcode 8:将 UISearchBarController 添加到 UITableViewHeaderFooterView 崩溃:nib 必须恰好包含一个顶级 object

Xcode 8: Adding UISearchBarController to UITableViewHeaderFooterView crash: nib must contain exactly one top level object

我正在构建我的部分 Header 在 XIB 文件中查看:

这是一个 XIB 文件,由 UISearchBarControllerUIView

组成

我在viewDidLoad中注册了一个tableViewController:

tableView.register(UINib(nibName: "MessagesSH", bundle: nil), forHeaderFooterViewReuseIdentifier: "MessagesSH")

我在viewForHeaderInSection:

中调用它
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

      // Below is the where the app crashes
      let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "MessagesSH") as? MessagesSH 

      return headerView
    }

当我 运行 应用程序崩溃时:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'invalid nib registered for identifier (MessagesSH) - nib must contain exactly one top level object which must be a UITableViewHeaderFooterView instance'

就我而言,我发现您不能在 Xib 文件中包含任何类型的控制器(即 UIViewControllerUISearchBarController 等)。我不得不使用故事板而不是 XIB。