Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 发出短而尖的叫声就像TabBarController通用应用程序下的SplitViewController_Ios_Core Data_Uitabbarcontroller_Uisplitviewcontroller_Appdelegate - Fatal编程技术网

Ios 发出短而尖的叫声就像TabBarController通用应用程序下的SplitViewController

Ios 发出短而尖的叫声就像TabBarController通用应用程序下的SplitViewController,ios,core-data,uitabbarcontroller,uisplitviewcontroller,appdelegate,Ios,Core Data,Uitabbarcontroller,Uisplitviewcontroller,Appdelegate,我是iOS新手,很难实现拆分视图主细节控制器。我已经创建了一个新项目 使用主细节应用程序通用应用程序,使用ARC、故事板和核心数据,然后 在tabbar控制器中嵌入局部视图控制器 在详细信息视图控制器之前添加了导航控制器 使选项卡栏控制器成为初始视图控制器 现在,storybaord如下图所示 我知道并阅读了一些旧帖子和苹果的人机界面指南,认为Split View应该是根视图控制器,但我也看到了像Tripadvisor和Yelp这样的应用程序!已经实现了同样的功能,并且已经得到了苹果的批准 我

我是iOS新手,很难实现拆分视图主细节控制器。我已经创建了一个新项目

  • 使用主细节应用程序通用应用程序,使用ARC、故事板和核心数据,然后
  • 在tabbar控制器中嵌入局部视图控制器
  • 在详细信息视图控制器之前添加了导航控制器
  • 使选项卡栏控制器成为初始视图控制器
  • 现在,storybaord如下图所示

    我知道并阅读了一些旧帖子和苹果的人机界面指南,认为Split View应该是根视图控制器,但我也看到了像Tripadvisor和Yelp这样的应用程序!已经实现了同样的功能,并且已经得到了苹果的批准

    我可以让它在没有核心数据的情况下工作,但当我用核心数据模板启动项目时,它似乎不起作用。当我运行程序时,它显示以下错误:

    2013-07-11 04:54:44.207 Trial4[21421:c07]-[UISplitViewController topViewController]:发送到实例0x8424990的无法识别的选择器 2013-07-11 04:54:44.211 Trial4[21421:c07]*由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:'-[UISplitViewController topViewController]:未识别的选择器发送到实例0x8424990' *第一次抛出调用堆栈: (0x1fa7012 0x13e4e7e 0x20324bd 0x1f96bbc 0x1f9694e 0x2643 0x16157 0x16747 0x1794b 0x28cb5 0x29beb 0x1b698 0x1f02df9 0x1f02ad0 0x1f1cbf5 0x1f1c962 0x1F4DB6 0x1f4cf44 0x1f4ce1b 0x1717a 0x18ffc 0x24ad 0x23d5) libc++abi.dylib:terminate调用引发异常 (lldb)

    所以我假设问题是我必须在AppDelegate中实现一些代码。m有人可以帮助我实现需要在AppDelegate中实现的代码吗

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
        {
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController;
        UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
        splitViewController.delegate = (id)navigationController.topViewController;
    
        UINavigationController *masterNavigationController = splitViewController.viewControllers[0];
        MasterViewController *controller = (MasterViewController *)masterNavigationController.topViewController;
        controller.managedObjectContext = self.managedObjectContext;
    } else {
        UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
        MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
        controller.managedObjectContext = self.managedObjectContext;
    }
    return YES;
    }
    
    有人能告诉我如何实现相同的功能(修改上面的代码)吗?如果我需要添加一个额外的主视图控制器,我应该如何继续

    谢谢

    我通过如下修改代码使应用程序的iphone部分正常工作任何可以提供修改ipad代码建议的人:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {  
        UISplitViewController *splitViewController = (UISplitViewController *) self.window.rootViewController;
        UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
        splitViewController.delegate = (id)navigationController.topViewController;
    
        UINavigationController *masterNavigationController = splitViewController.viewControllers[0];
        MasterViewController *controller = (MasterViewController *)masterNavigationController.topViewController;
        controller.managedObjectContext = self.managedObjectContext;
    
    } else {
    
        UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
        UINavigationController *navigationController = tabBarcontroller.viewControllers[0];
        MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
        controller.managedObjectContext = self.managedObjectContext;   
    }
    return YES;
    }
    
    以下是我努力实现的一些照片:

    在iPad中以横向模式拍摄Yelp屏幕:

    纵向模式下的主视图:纵向模式下的详细视图:看起来你解决了iPhone视图的这个问题——你只需要做一些类似的事情来更新iPad机箱。根视图控制器是一个UITABBARC控制器——所以抓住它的第一个视图控制器,它应该是分割视图控制器。但是通用分割视图的连接和情节提要设置不同,所以作为一个新手,每次尝试都会陷入困境。来自论坛的一些代码帮助将非常有用,因为这是我尝试的第一个主要项目。