【问题标题】:App wont start using testflight on iOS6应用程序不会在 iOS 6 上开始使用 testflight
【发布时间】:2012-10-14 12:22:38
【问题描述】:

我有一个应用程序,我想在 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;

【问题讨论】:

  • 控制台日志中是否有任何错误?
  • 如何检查?你说的是ipad吗?我没有检查过。在模拟器上没有错误。
  • 在 Xcode 下的 View -> Debug Area -> Activate Console
  • 哦,你的意思是在 Xcode 中.. 不,开发部分没有问题。我已经创建了 IPA 文件并将其上传到 testflight 并将其安装在我的 ipad 中,这就是问题发生的地方。我确信我错过了一些细节。
  • 我对 testflight 不是很熟悉,但我建议您检查一下您的 testflight 日志。这篇 SO 帖子可能会有所帮助。 stackoverflow.com/questions/10317426/…

标签: iphone ios ipad xcode4 testflight


【解决方案1】:

请使用两个 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;
    }

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

【讨论】:

  • 这没有帮助抱歉。我通过解决问题解决了我的问题。我已经使用它现在正在运行的单视图类型应用程序重新制作了该应用程序。早些时候它是一个基于实用程序的翻转视图应用程序,有一些我不确定的设置。不过感谢您的尝试。
【解决方案2】:

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

查看这个 SO 问题:Application windows are expected to have a root view controller at the end of application launch warning Rob Mayoff 很好地描述了您的应用程序初始化时应该发生的情况。

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

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

【讨论】:

  • 谢谢,一旦我拿到 Mac 机器,我会发布应用程序委托代码。它在工作。我检查了您发布的第一个链接,我认为问题出在第二点。但我再次需要先用应用程序检查它。如果有什么绿色的,我会及时通知你。
  • 我尝试了链接中提到的所有要点。它没有帮助。不过感谢您的帮助。
【解决方案3】:

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

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

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

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

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

【讨论】:

  • 能否请您详细说明第 1 点。你说正确设置代理的窗口是什么意思。
  • 顺便说一句,我已将委托设置为使用 SSDMainViewController。明天拿到 MAC 后,我会发布示例代码。它在工作。
  • 抱歉评论这么快。我认为您的回答可能会有所帮助。我明天会检查它@jrturton。
  • 应用委托有一个名为window的属性。通常你通过这样的一行来设置它(在电话上打字!)self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
  • 我们必须在 appdelegate.m 中写这个?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多