作者:ksdhsiujfcek_732 | 来源:互联网 | 2023-05-26 18:28
如何解决《UISplitViewControllerDisplayModePrimaryOverlay导致"不平衡调用开始/结束外观转换"》经验,为你挑选了1个好方法。
在iOS 8中,将UISplitViewController上的preferredDisplayMode设置为PrimaryOverlay会生成以下警告:
"UINavigationController的开始/结束外观转换的不平衡调用"
如果我将preferredDisplayMode设置为AllVisible或根本不设置它,则没有问题.我尝试过的模拟器中的所有iPad和iPhone都出现问题.无论应用程序是纵向还是横向启动,都会出现问题.
这是一些非常简单的代码:
- (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;
}
1> tobygriffin..:
包裹您的显示代码dispatch_async
.否则iOS似乎与同时运行的其他动画混淆.
dispatch_async(dispatch_get_main_queue(), ^{
svc.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay;
});
要么
dispatch_async(dispatch_get_main_queue()) {
svc.preferredDisplayMode = .PrimaryOverlay
}