2

我有一个应用程序,我想在 iOS 设备上对其进行测试。该应用程序使用NIB 文件,没有故事板。

目标框架设置为 - 5.1 设备 - 通用。

我已经创建了 IPA 文件并上传到了 TestFlightApp。

我已经在我的 iPad 上下载并安装了该应用程序。奇怪的是,当我点击图标时,会显示黑屏,但没有其他任何反应。

我做了以下设置。

主界面 -SSDMainViewController 主故事板 - 未设置,因为我在应用程序中没有任何故事板。

这不是 IOS 版本的问题,因为其他应用程序运行良好。

编辑:当我双击 iPad 按钮时,我看到应用程序没有崩溃。它在后台运行。

编辑 2:有关该问题的更多信息。

好吧,我采用了一个基于视图的应用程序,它所有的 NIB 都没有故事板。它最初是一个针对 IOS 5.1 的 iPhone 应用程序,但后来我将项目下拉列表中的值更改为UNIVERSAL。但我认为这没问题,因为当我将它安装在我的 iPad 上时,它什么也没显示。它还显示带有 iPhone 框架的黑屏,然后什么也没有。该应用程序仍然存在于线程中。

困扰我的是我在以下方面做到了这一点AppDelegate

我已经设置

self.mainViewController = [[SSDMainViewController alloc] initwithnibname:@"SSDMainViewController" bundle:nil];

然后我设置了导航控制器,然后将视图推送给它。

我找到了更多信息

在控制台中它说。

该应用程序应在应用程序启动结束时设置其根视图。

我的应用程序代表

ftipValue=0.25;

cardtype = @"American Express";
[cardtype retain];

[self CallFunctionForLogout];

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Create an instance of YourViewController

//SSDMainViewController *yourViewController = [[SSDMainViewController alloc] init];
self.mainViewController = [[[SSDMainViewController alloc] initWithNibName:@"SSDMainViewController" bundle:nil] autorelease];



// Create an instance of a UINavigationController

// its stack contains only yourViewController

UINavigationController *navController = [[UINavigationController alloc]

                                                  initWithRootViewController:self.mainViewController];

navController.navigationBarHidden = YES;

// Place navigation controller's view in the window hierarchy

[[self window] setRootViewController:navController];

[self.window makeKeyAndVisible];

return YES;
4

3 回答 3

4

请使用两个 xib 文件,通用应用程序我们想要两个 xib (nib)

  • 一个用于 iPhone - ViewController_iPhone
  • iPad 的第二个 - ViewController_iPad

将以下代码添加到您的 AppDelegate.m 文件。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
        // Override point for customization after application launch.
       if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
       {
           self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
        } 
       else {
           self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
        }
        self.window.rootViewController = self.viewController;
        [self.window makeKeyAndVisible];
        return YES;
    }

我已经这样做了,它对我来说很好。

于 2012-11-01T06:16:54.060 回答
3

该错误意味着您没有正确设置应用程序。

您说您已将 SSDMainController 设置为主界面文件-这适用于 iPhone 和 iPad 吗?通用应用程序的摘要选项卡的该部分中有两组条目。

我希望为 iPad 指定一个不同的 xib 文件,因为将使用不同大小的视图和不同的布局。

您要么没有设置 iPad xib,所以应用程序无法设置带有根视图控制器的窗口,或者您没有设置有效的 iPad xib,所以它根本没有加载,结果相同。

如果您只想让应用程序在带有 2x 按钮的 mini-iPhone 窗口中运行,请将其保留为仅限 iPhone 的应用程序。

于 2012-10-28T07:17:00.210 回答
2

如果您收到“应用程序应在应用程序启动结束时设置其根视图”。有多种可能性。显然,这就是问题所在,因为你有一个黑屏,里面什么都没有……

看看这个 SO 问题:应用程序窗口应该在应用程序启动警告结束时有一个根视图控制器 Rob Mayoff 很好地描述了应用程序初始化时应该发生的事情。

此外,在上面的帖子中链接到的是这篇帖子,其中还有 35 个答案,其中包含可能发生的各种情况。

除了浏览这些链接之外,您还需要发布额外的代码和/或说明您的 nib 是如何连接的,以便任何人帮助您——正如可能削弱初始化序列的无数方法所证明的那样。

于 2012-10-28T21:31:14.227 回答