xcode 模拟器在尝试测试不同的故事情节时不断改变硬件设备模式

Posted

技术标签:

【中文标题】xcode 模拟器在尝试测试不同的故事情节时不断改变硬件设备模式【英文标题】:xcode simulator keeps changing hardware device modes when trying to test different storylines 【发布时间】:2013-03-11 08:52:03 【问题描述】:

我的模拟器有点奇怪,我希望有人能帮助我。下面的代码在我的 AppDelegate 中。根据正在运行的设备,我有不同的故事板。设备检测代码似乎工作正常,但我在将模拟器硬件->设备保持在我想要的位置时遇到问题。

    项目设置为“通用”,模拟器设置为 苹果手机。模拟器会自己变成iPhone模拟器 并作为 iPhone 运行。 iPad 的项目设置,iPad 的模拟器,作为 iPad 运行。放 项目回到通用,模拟器回到iPhone,模拟器 将自身重置回 iPad 并将代码作为 iPad 运行。 项目设置为 iPhone,将模拟器留在 iPad 上。作为一个运行 iPad 上的 iPhone 应用??

....以及多种不同的变体。尝试多次重新启动Mac和xcode,没有效果。如果我重置模拟器并在模拟器上而不是通过 xcode 运行项目图标,模拟器将保持在我放入的硬件模式下。有什么想法吗??


-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    // testing for iPad detection
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    
        // setting storyboard name
        [[Data sharedData] setStoryboardName:@"MainStoryboardPad"];

        // going to the 4" screen story board and settng it as the root controller
        self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboardPad" bundle:nil];
        UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"Intro Screen"];

        // making that tab controller the root controller
        self.window.rootViewController = viewController;
        [self.window makeKeyAndVisible];
        return YES;
    
    else
    
        // detecting screen size
        if (([UIScreen mainScreen].scale == 2) && ([[UIScreen mainScreen] bounds].size.height == 568))
        
            // setting storyboard name
            [[Data sharedData] setStoryboardName:@"MainStoryboard40"];

            // going to the 4" screen story board and settng it as the root controller
            self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard40" bundle:nil];
            UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"Intro Screen"];

            // making that tab controller the root controller
            self.window.rootViewController = viewController;
            [self.window makeKeyAndVisible];
            return YES;
        
        else
        
            // setting storyboard name
            [[Data sharedData] setStoryboardName:@"MainStoryboard35"];

            // going to the 3.5" screen story board and settng it as the root controller
            self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard35" bundle:nil];
            UIViewController *viewController = [storyboard instantiateViewControllerWithIdentifier:@"Intro Screen"];

            // making that tab controller the root controller
            self.window.rootViewController = viewController;
            [self.window makeKeyAndVisible];
            return YES;
        
    

【问题讨论】:

【参考方案1】:

如果我正确理解了您的问题,那么您遇到的问题是您在模拟器中作为 iPad 运行您的应用程序时遇到了困难,因为它不断变回 iPhone。这是因为您需要在 Xcode 的顶部工具栏中选择要在哪个模拟器中运行应用程序:

完成后,单击运行,您选择的 ios 模拟器应该会打开并运行您的应用程序。

【讨论】:

以上是关于xcode 模拟器在尝试测试不同的故事情节时不断改变硬件设备模式的主要内容,如果未能解决你的问题,请参考以下文章

XCode 故事板问题

故事板按钮不会推动 Seque

Xcode 快速导航栏在模拟器运行时消失,但在情节提要中不会

Xcode 在更改时为每个应用程序目标编译情节提要

不需要xcode故事板中的大写标签

如何在 xcode 6.3 界面构建器故事板中默认模拟指标?