1

我正在开发一个通用应用程序。它在 iPhone 和 iPad 模拟器以及 iPhone 4S 上运行良好,但在 iPad 上崩溃。它是 iPad 上的拆分视图,只有在打开某些视图时才会崩溃。有些视图工作得很好,没有问题,但在其他视图中,当在主视图中选择某一行以在详细视图中显示新视图时,它会崩溃。如果我在 iPad 模拟器上运行有问题的视图,它就可以很好地打开。有任何想法吗?

这是我在主视图中选择其行时在详细视图中显示问题视图之一的方式。我在这个视图中有一个搜索栏,搜索栏出现了,但地图视图没有。同样,一切都在 iPad 模拟器上运行良好。

else if (indexPath.row == 8)
    {
        RSFMipad *rsfm = [[RSFMipad alloc]initWithNibName:nil bundle:nil];
        NSMutableArray *details = [self.splitViewController.viewControllers mutableCopy];

        UINavigationController *detailNav = [[UINavigationController alloc]initWithRootViewController:rsfm];

        [details replaceObjectAtIndex:1 withObject:detailNav];

        KFBAppDelegate *appDelegate = (KFBAppDelegate *)[[UIApplication sharedApplication]delegate];
        appDelegate.splitViewController.viewControllers = details;
        appDelegate.window.rootViewController = self.splitViewController;
        appDelegate.splitViewController.delegate = rsfm;
        [appDelegate.splitViewController viewWillAppear:YES];
    }

这是另一个,我从主视图的不同行加载另一个。这不会立即填充详细视图,而是在主视图中加载一个新的表视图。这也会导致 iPad 崩溃,但不会导致模拟器崩溃。

else if (indexPath.row == 6)
    {
        MemberBenefitsipad *benefits = [[MemberBenefitsipad alloc] initWithNibName:@"MemberBenefitsipad" bundle:[NSBundle  mainBundle]];
        [self.navigationController pushViewController:benefits animated:YES];
    }

日志中显示的错误错误是:

2013-06-12 14:36:54.267 KFBNewsroom[12125:907] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/ED63F1DA-31C8-4FC1-81D7-A3DCE3186C98/KFBNewsroom.app> (loaded)' with name 'MemberBenefitsipad''

编辑:我解决了这个问题。我只需要将 xib 文件放在捆绑资源中。

4

1 回答 1

1

此问题可能是由您的 xib 文件的名称引起的。您没有名为MemberBenefitsipad.

如果 iPhone 和 iPad 的视图控制器有不同的 xib 文件,则将文件命名为“MyXibFile~ipad.xib”(适用于 iPad)和“MyXibFile~iphone.xib”适用于 iPhone,并且当您尝试加载 xib 时仅使用“MyXibFile”字符串不是整个名称,这样操作系统将根据设备加载所需的 xib。

还要注意资源和 xib 命名,因为模拟器不区分大小写(MyXibFile = myxibfile),但设备区分大小写(MyXibFile!= myxibfile)

于 2013-06-12T20:05:26.510 回答