笔尖,但没有得到一个UITableView
我的应用程序适用于iOS 5.1,但对于iOS 6模拟器,我得到以下错误。
终止应用程序由于未捕获的exception'NSInternalInconsistencyException',原因:' – [UITableViewController loadView]加载“MainListViewController”的笔尖,但没有得到一个UITableView。
我是UITableViewController
,我不想改变它。
tableview以编程方式创build,有一个虚拟的MainListViewController.xib
从Mainwindow.xib
标签栏控制器加载。
我也尝试删除MainListViewController.xib
,从MainWindow.xib
标签栏控制器中删除它,在AppDelegate中创buildMainListViewController
并将其添加到Tab Bar Controller作为UITabBarItem
摆脱这个笔尖问题,但我仍然得到相同的错误。
如果你有一个UIBableViewController子类的NIB,那么它的view
sockets必须连接到一个UITableView
。
您正确地删除了MainListViewController.xib
,并在代码中完成了这一切,但是它不适用于您的原因是因为旧版XIB在构build和运行时不会被删除。 所以,从模拟器中删除应用程序,然后再试一次。 它应该工作。
我有使用故事板的类似问题。 我会发布我的解决scheme,为他人的利益。 关键是,如果你已经正确地将文件的所有者设置为UITableView的子类,那么你仍然需要确保view属性被设置为Table View。 我正在使用故事板,但同样的事情也应该适用于笔尖。 展开“文档大纲”,以便您可以看到故事板的层次结构。 我将在下面列出一些屏幕截图。 解决这个问题的快速方法是,您要在文档大纲中查看您的视图 。 删除任何你有作为它的孩子的tableview。 拖动视图属性顶部的其他tableview。 完成。 我会在屏幕截图中给你看。
注意两个表。 你想删除table1及其单元格。
好。 现在拖动table2到视图,你就完成了。 现在应该工作。 基本上,如果你有一个UITableViewController的子类,那么它必须有表视图代替视图,否则会崩溃。
原因可能是:
.h文件检查它是UIViewController的子类。 它会解决问题。
总之,你正在设置一个自定义的UITableViewController子类到UIViewController! 你不可以做这个。 你应该给UIViewController一个UIViewController的子类。
我使用Storyboard和1个表格查找解决scheme。
关键是当你创build一个自定义的类(newViewController)只是检查它是UITableViewController的一个子类。 一旦创build转到表视图控制器(我们的表),并在身份检查器select之前创build的自定义类(newViewController)。
这对我行得通。 希望我的评论帮助某人。
请连接你的表视图作为一个视图outlet.outlet必须连接到一个UITableView。
有几个原因可能会发生。
-
你可能还没有添加UITableViewDelegate&UITableViewDataSource到你的.h
@interface TableController:UIViewController {
-
您可能没有将您声明的sockets连接到Storyboard / Nib中的组件
-
你可能调用一个UIViewController而不是UITableView或者在你的.h版本中
@interface TableController : UIViewController
要么
@interface TableController : UITableViewController
如果您使用UITableView作为您的顶视图。
喜欢这个 :
您需要在Controller中使用UITableViewController
class ItemsViewController: UITableViewController
如果您在Storyboat中的View下使用UITableView。
喜欢这个 :
你需要使用UITableViewDelegate和UITableViewDataSource与UIViewController
class ItemsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
我有这个问题,解决这只是一个简单的事情。
保持笔尖,如果你已经创build…
转到(XIB文件),并从对象库添加一个tableView组件到XIB文件的iPhone屏幕,它应该工作:)
这对我有效。 希望它可以帮助你。
在AppDelegate – >中
#import "TableViewController.h" // name of your TableViewController class - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //PUT TableViewController *controller = [[TableViewController alloc] initWithStyle:UITableViewStylePlain]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = controller; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; // Override point for customization after application launch. return YES; }
确保在故事板中你的视图控制器指向这个类:
我也遇到过这个问题,但我在xcode 6.2中使用了storyboard。 我从故事板中删除了相应的视图,并将表视图控制器从对象库重新拖放到故事板,然后工作。
@smileBot答案帮助我意识到解决scheme是非常容易的,由iOS提出的错误是有道理的
终止应用程序由于未捕获的exception'NSInternalInconsistencyException',原因:' – [UITableViewController loadView]加载“MainListViewController”的笔尖,但没有得到一个UITableView。
他们的基本上说,nib的视图控制器没有返回一个UITableView,因为它不是,大多数情况下 – 你的笔尖是返回一个View – 当你在Xcode IDE中创build一个新的ViewController时默认为你创build。
解决方法就像删除视图 – 这可能会违反规范 – 但继续前进,select它和退格 – 然后拖放一个UITableView到你的ViewController中,这个UITableView现在将作为你的TableViewController的根视图。
请记住,这只是对直接inheritanceUITableViewController的类才有必要的。
祝你好运。
我有同样的问题,浪费3小时后,我发现它“…这是错误的”我使用tableviewcontroller类,并给这个类的uiviewcontroller引用,而不是视图控制器类我拿tableviewcontroller类,因为我把故事板uiviewcontroller。 因此删除tableviewcontroller类并将tableviewcontroller类的代码粘贴到视图控制器类中,然后在身份检查器中的故事板中将“不粘贴整个代码只粘贴逻辑”给当前视图控制器类的类引用。