nib但没有获得UITableView

irm*_*rmu 57 ios ios6

我的应用程序适用于iOS 5.1,但对于iOS 6模拟器,我收到以下错误.

由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UITableViewController loadView]加载了"MainListViewController"笔尖,但没有得到UITableView.

我是子类UITableViewController,我不想改变它.

tableview是以编程方式创建的,有一个虚拟MainListViewController.xib加载来自Mainwindow.xibTab Bar Controller.

我也尝试删除MainListViewController.xib,从MainWindow.xibTab Bar Controller中删除它,MainListViewController在AppDelegate中创建它并将其添加到Tab Bar Controller UITabBarItem以摆脱这个nib问题,但我仍然得到同样的错误.

mat*_*way 98

如果你有UITableViewController子类的NIB,那么它的view出口必须连接到a UITableView.

你是正确的删除MainListViewController.xib并在代码中完成所有操作,但它不适合你的原因是因为在构建和运行时不会删除旧的XIB.因此,从模拟器中删除应用程序,然后重试.它应该工作.

  • 谢谢!我删除了旧的应用程序,清理了项目并关闭了iOS模拟器,现在没有.xib文件的版本正常工作. (10认同)

smi*_*Bot 28

我使用故事板时遇到了类似的问题.为了别人的利益,我会发布我的解决方案.关键是如果您已将文件的所有者正确设置为UITableView的子类,则仍需确保将view属性设置为Table View.我正在使用故事板,但同样的东西也应该适用于笔尖.展开"文档大纲",以便查看故事板的层次结构.我将在下面添加一些屏幕截图.解决这个问题的快捷方法是,您希望在文档大纲中查看您的视图.删除您作为孩子的任何tableview.将另一个tableview拖动到view属性的顶部.完成.我会在屏幕截图中向您展示.

在此输入图像描述

注意这两个表.您想要删除table1及其单元格.

在此输入图像描述

好.现在将table2拖到视图中,您就完成了.应该现在就行.基本上,如果你有一个UITableViewController的子类,那么它必须有Table View代替视图,否则它将崩溃.

在此输入图像描述


Abd*_*sin 17

原因可能是:

.h文件检查它是否是UIViewController的子类.它会解决问题.


小智 12

如果您使用UITableView作为顶视图.

像这样 :

在此输入图像描述

您需要在Controller中使用UITableViewController

class ItemsViewController: UITableViewController
Run Code Online (Sandbox Code Playgroud)

如果您在Storyboat中的View下使用UITableView.

像这样 :

在此输入图像描述

您需要将UITableViewDelegate和UITableViewDataSource与UIViewController一起使用

class ItemsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
Run Code Online (Sandbox Code Playgroud)


oab*_*rca 11

简而言之,您将自定义UITableViewController子类设置为UIViewController !! 你不能做这个.您应该为UIViewController提供一个UIViewController子类.