【问题标题】:UITableViewController (storyboard)UITableViewController(故事板)
【发布时间】:2012-03-18 00:52:57
【问题描述】:

我有导航控制器作为进入视图控制器的初始视图

现在我有这个视图之后的表格视图

导航控制器 > UI 视图控制器 > 表格视图

这里出现问题

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
    UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
    MasterViewController2 *controller = (MasterViewController2 *)navigationController.topViewController;
    controller.managedObjectContext = self.managedObjectContext;
    return YES;
}

应用程序构建并失败并显示此消息

'NSInvalidArgumentException', reason: '-[ViewController setManagedObjectContext:]: unrecognized selector sent to instance 0x8e22df0'

知道为什么即使没有构建错误或警告,它的应用程序也会失败和崩溃?

【问题讨论】:

    标签: objective-c uiviewcontroller xcode4.2 uitableview


    【解决方案1】:

    您需要将情节提要中的视图控制器的类设置为MasterViewController2。例外是向您显示该对象的类型为ViewController,消息为'-[ViewController setManagedObjectContext:]:。这是在身份检查器中(ViewUtilitiesShow Identity Inspector 并选择了您的视图控制器)。

    【讨论】:

    • 我已经设置好了,问题是将 ManagedObjectContext 从 UIViewController 传递到 UITableViewController,其中 UIViewcontroller 不是 rootViewController,我不能使用 UINavigationController 或 UITabbarcontroller。如果我删除代码 UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; MasterViewController2 *controller = (MasterViewController2 *)navigationController.topViewController; controller.managedObjectContext = self.managedObjectContext;并返回 YES,代码有效,但没有任何内容插入 DB
    • 而不是添加视图控制器做NSLog(@"%@", [controller class]);。如果该类不是 MasterViewController2,那么您要么没有在情节提要中设置该类,要么您通过顶视图控制器访问的内容与您期望的不同。
    • wbyoung 感谢您提供的信息,我认为这也是这种情况,因为我可能缺少来自应用程序委托的核心数据接线上下文,但我尝试从应用程序委托检索以及从应用程序委托传递到视图控制器还是没有运气。
    • 编辑后,您现在遇到了不同的崩溃。原来的问题解决了吗?您的新问题可能是缺少或命名不正确的实体或缺少模型。它与原始问题无关。我建议完全将其作为一个新问题提出。
    猜你喜欢
    • 2019-01-16
    • 2012-02-11
    • 2014-11-30
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2012-01-08
    相关资源
    最近更新 更多