故事板 UITableViewCell 无法加载名称为 bundle 的 nib...以编程方式加载时
Storyboard UITableViewCell could not load nib in bundle with name... when loaded programmatically
我有一个 Viewcontroller 场景(故事板),其中有一个 UITableView
和一个名为 Foo 的 UITableViewCell
。 Foo 从故事板加载时加载正常,但我需要以编程方式从另一个 UITableView
加载它。
我正在像这样注册单元格(起初我尝试没有 UINib
但 IBOutlets
是 nil
):
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "Foo", bundle: nil), forCellReuseIdentifier: "bar")
}
然后像这样加载它:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "bar", for: indexPath) as! Foo
return cell
}
这不起作用,returns 错误:
由于未捕获的异常 'NSInternalInconsistencyException' 而终止应用程序,原因:“无法在捆绑包中加载 NIB:'NSBundle <[path]> (loaded)' 名称为 'Foo'”
我确定的事情:
- 属性检查器中的 Foo
UITableViewCell
标识符是 Foo
- 具有正确的目标成员资格
您可能想为您的单元格创建一个单独的 nib 文件,然后将其注册到您的 table 视图,就像您在上面所做的那样。
我有一个 Viewcontroller 场景(故事板),其中有一个 UITableView
和一个名为 Foo 的 UITableViewCell
。 Foo 从故事板加载时加载正常,但我需要以编程方式从另一个 UITableView
加载它。
我正在像这样注册单元格(起初我尝试没有 UINib
但 IBOutlets
是 nil
):
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "Foo", bundle: nil), forCellReuseIdentifier: "bar")
}
然后像这样加载它:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "bar", for: indexPath) as! Foo
return cell
}
这不起作用,returns 错误: 由于未捕获的异常 'NSInternalInconsistencyException' 而终止应用程序,原因:“无法在捆绑包中加载 NIB:'NSBundle <[path]> (loaded)' 名称为 'Foo'”
我确定的事情:
- 属性检查器中的 Foo
UITableViewCell
标识符是 Foo - 具有正确的目标成员资格
您可能想为您的单元格创建一个单独的 nib 文件,然后将其注册到您的 table 视图,就像您在上面所做的那样。