SplitViewController отображает только белый экран - PullRequest
1 голос
/ 05 октября 2019

У меня много лет было опубликовано универсальное приложение, которое работало нормально. Теперь, после обновления iOS13, он просто начинает сплошной белый экран. Единственное исключение - если я запускаю его на iPad и меняю ориентацию устройства. Чем приложение наконец-то выглядит так, как всегда. Я поместил точку останова в мой файл делегата в методе Application, а другую - в мой rootviewcontroller в методе viewDidLoad. В 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;
}

1 Ответ

0 голосов
/ 18 октября 2019

Проблема с контроллером iOS 13 Split View. Если у вас есть контроллер навигации, встроенный в контроллер вида Master / Detail, он просто загружает контроллер навигации.

Чтобы устранить эту проблему, создайте пользовательский класс из UISplitViewController и назначьте его вашему splitviewcontroller в раскадровке и программно добавьте контроллер навигации и masterViewcontrollerк этому UISplitViewController. Это должно загрузить ваш взгляд правильно. Этот код входит в viewdidload или willappear класса UISplitviewcontroller. Пример кода.

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

Это исправило мою проблему с аналогичной проблемой с iOS. Надеюсь, это поможет.

...