3 Stimmen

UISplitViewControllerDisplayModePrimaryOverlay verursacht "Unausgeglichene Aufrufe zum Starten/Beenden von Erscheinungsübergängen"

In iOS 8 generiert das Setzen des preferredDisplayMode auf einem UISplitViewController auf PrimaryOverlay die folgende Warnung:

"Unausgeglichene Aufrufe zum Beginnen/Beenden von Navigationsübergängen"

Es gibt kein Problem, wenn ich preferredDisplayMode auf AllVisible setze oder überhaupt nicht setze. Das Problem tritt bei allen iPads und iPhones im Simulator auf, die ich ausprobiert habe. Das Problem tritt auf, egal ob die App im Hoch- oder Querformat startet.

Hier ist ein sehr einfacher Code:

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

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    UITableViewController *tableViewController = [[UITableViewController alloc] init];
    UIViewController *viewController = [[UIViewController alloc] init];

    UINavigationController *masterNavController = [[UINavigationController alloc] initWithRootViewController:tableViewController];
    UINavigationController *detailNavController = [[UINavigationController alloc] initWithRootViewController:viewController];

    UISplitViewController *svc = [[UISplitViewController alloc] init];
    [svc addChildViewController:masterNavController];
    [svc addChildViewController:detailNavController];

    //svc.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible;
    svc.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay;

    self.window.rootViewController = svc;
    [self.window makeKeyAndVisible];

    return YES;
}

11voto

tobygriffin Punkte 5209

Umschließen Sie Ihren Anzeigecode in dispatch_async. Andernfalls scheint iOS verwirrt zu werden, wenn gleichzeitig andere Animationen ausgeführt werden.

dispatch_async(dispatch_get_main_queue(), ^{
    svc.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay;
});

oder

dispatch_async(dispatch_get_main_queue()) {
    svc.preferredDisplayMode = .PrimaryOverlay
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X