SplitViewController仅显示白屏

时间:2019-10-05 11:22:33

标签: ios objective-c screen uisplitviewcontroller ios13

我拥有一个发布的通用应用程序,多年来运行良好。现在,由于iOS13更新,它开始显示为纯白色屏幕。唯一的例外是,如果我在iPad上运行它并更改设备的方向。比该应用程序终于像往常一样出现。我在Application方法的委托文件中放置了一个断点,在viewDidLoad方法的rootviewcontroller中将另一个断点放置了。在iOS 12中,两个断点都将命中,一切都将按原样运行。在iOS 13中,永远不会达到rootviewcontroller断点。该应用程序非常旧,使用的是没有Storyboard的普通XIB文件。

我的代表中的代码是这样;

#import "AppDelegate.h"
#import "RootViewController.h"

@implementation AppDelegate

@synthesize window, splitViewController;

@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;

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

    [self.window setRootViewController:self.splitViewController];
    [self.window makeKeyAndVisible];
    return YES;
}

1 个答案:

答案 0 :(得分:0)

与iOS 13拆分视图控制器有关的问题。如果您将导航控制器嵌入到“主/细节”视图控制器中,则仅加载导航控制器。

要解决该问题,请从UISplitViewController创建一个自定义类,并将其分配给情节提要中的splitviewcontroller,然后以编程方式将Navigation控制器和masterViewcontroller添加到该UISplitViewController。那应该正确加载您的视图。这段代码在UISplitviewcontroller类的viewdidload中或将出现。 示例代码。

    MasterViewController *master = [[MasterViewController alloc] init];
    UINavigationController *tableViewNavigationController = [[UINavigationController alloc] initWithRootViewController:master];
    UINavigationController *navC = [[UINavigationController alloc] init];
    self.viewControllers = [NSArray arrayWithObjects:tableViewNavigationController,navC, nil];

此问题解决了我的iOS出现类似问题。希望能有所帮助。