Xcode 8:将 UISearchBarController 添加到 UITableViewHeaderFooterView 崩溃:nib 必须恰好包含一个顶级 object
Xcode 8: Adding UISearchBarController to UITableViewHeaderFooterView crash: nib must contain exactly one top level object
我正在构建我的部分 Header 在 XIB
文件中查看:
这是一个 XIB 文件,由 UISearchBarController
和 UIView
组成
我在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 文件中包含任何类型的控制器(即 UIViewController
、UISearchBarController
等)。我不得不使用故事板而不是 XIB。
我正在构建我的部分 Header 在 XIB
文件中查看:
这是一个 XIB 文件,由 UISearchBarController
和 UIView
我在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 文件中包含任何类型的控制器(即 UIViewController
、UISearchBarController
等)。我不得不使用故事板而不是 XIB。