繁体   English   中英

SplitViewController 只显示白屏

[英]SplitViewController only displays white screen

多年来,我一直在发布一个运行良好的通用应用程序。 现在,自从 iOS13 更新以来,它只是开始变成纯白屏幕。 唯一的例外是如果我在 iPad 上运行它并更改设备的方向。 比应用程序终于像往常一样出现。 我在 Application 方法的委托文件中放置了一个断点,在 viewDidLoad 方法的 rootviewcontroller 中放置了另一个断点。 在 iOS 12 中,两个断点都被命中,一切都照常运行。 在 iOS 13 中,rootviewcontroller 断点永远不会到达。 该应用程序非常旧,并且使用没有故事板的普通旧 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;
}

iOS 13 拆分视图 controller 的问题。 如果您将导航 controller 嵌入到主/详细视图 controller 它只会加载导航 controller。

要解决该问题,请从 UISplitViewController 创建一个自定义 class 并将其分配给 storyboard 中的 splitviewcontroller,并以编程方式将 Navigation controller 和 masterViewController 添加到该 UISplitViewController。 那应该正确加载您的视图。 此代码进入 UISplitviewcontroller class 的 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 有类似的问题。 希望有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM