我想用TableView创建具有2个Tabbaritems的应用程序(任务,列表,设置(不重要) - 如下图所示
我想管理核心数据。我想将核心数据存储到Task和List。并希望将列表中的核心数据链接到任务但我收到错误..这是AppDelegate
中的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
UINavigationController *navController = tabBarController.viewControllers[0];
ItemListTableViewController *itemList = (ItemListTableViewController *)navController.topViewController;
itemList.managedObjectContext = self.managedObjectContext;
TaskListTableViewController *taskList = (TaskListTableViewController *)navController.topViewController;
taskList.managedObjectContext = self.managedObjectContext;
return YES;
}
在我只创建一个Tabbar(列表)之前,一切都可以找到但我想放置另一个tabbar(Task)和manageObject,如上所述。当我运行应用程序时,它可以工作,但是当我点击列表标签栏时,它会出错:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'List''
感谢您的帮助..
答案 0 :(得分:0)
正如其他人在评论中指出的那样,你的itemList和taskList都引用了同一个视图控制器。
ItemListTableViewController *itemList = (ItemListTableViewController *)navController.topViewController;
TaskListTableViewController *taskList = (TaskListTableViewController *)navController.topViewController;
唯一的区别是,在一种情况下,你将它作为一个不同的类。实际上,您需要访问第二个选项卡的视图控制器 - 这可以在tabbarcontroller的viewControllers属性中找到。此数组中的第一项(索引0)对应于第一个选项卡的视图控制器,因此您正确拥有
UINavigationController *navController = tabBarController.viewControllers[0];
同样,第二个选项卡的视图控制器位于索引1处,因此您应该
UINavigationController *taskNavController = tabBarController.viewControllers[1];
然后你可以设置
TaskListTableViewController *taskList = (TaskListTableViewController *)taskNavController.topViewController;
(再看看你的tabbar图片,我看到我的索引方向错误:taskList与第一个标签相关,索引为0,而itemList是第二个标签,索引为1。