gpt4 book ai didi

iOS5 SplitViewController 使 BarButton 在应用程序启动时处于横向 View 时可见

转载 作者:行者123 更新时间:2023-11-28 17:39:11 25 4
gpt4 key购买 nike

我有一个 UISplitViewController,其中一个 UIViewController 作为主 Controller ,一个 UINavigationController 作为我的细节 Controller (它包含一个实际的 DetailsController,因为它是根 Controller )。

在 iOS5 中,在应用程序启动时(将设备保持在横向 View 中),我将 splitViewController 的 View 添加到我的窗口,然后我在 splitViewController 的顶部显示了一个 loginController,如下所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
// Override point for customization after application launch.

KRMasterViewController *masterViewController = [[[KRMasterViewController alloc] initWithNibName:@"KRMasterViewController" bundle:nil] autorelease];
UINavigationController *masterNavigationController = [[[UINavigationController alloc] initWithRootViewController:masterViewController] autorelease];

KRDetailViewController *detailViewController = [[[KRDetailViewController alloc] initWithNibName:@"KRDetailViewController" bundle:nil] autorelease];
UINavigationController *detailNavigationController = [[[UINavigationController alloc] initWithRootViewController:detailViewController] autorelease];

self.splitViewController = [[[UISplitViewController alloc] init] autorelease];
self.splitViewController.delegate = detailViewController;
self.splitViewController.viewControllers = [NSArray arrayWithObjects:masterNavigationController, detailNavigationController, nil];
[self.window addSubview:self.splitViewController.view];

LoginController *controller=[[LoginController alloc]
initWithNibName:@"LoginController" bundle:nil];
[self.splitViewController presentModalViewController:controller animated:false];

[self.window makeKeyAndVisible];
return YES;
}

如您所见,detailsController 是我的 splitViewController 的委托(delegate)。问题出在 iOS4 中,在显示 loginController 之前,委托(delegate)方法:

- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem 
forPopoverController:(UIPopoverController *)popoverController

然后当我解除 loginController 委托(delegate)方法时调用:

- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem

被调用。我猜 iOS 很晚才意识到我在风景中,但在我到达 detailController 之前弄清楚了,所以一切都很酷。在 iOS 5 中,当我到达 splitViewController 时,第二种方法不会被调用。这意味着我只剩下 barButtonItem 在横向 View 中可见。有趣的是,如果我旋转到纵向然后回到横向,从那时起这些方法就会被正确调用。以前有人经历过吗?有什么解决办法吗?

最佳答案

我遇到过类似的问题。应用程序启动后,我展示登录 modalVC。但是当我关闭它时,detailViewController 中的 BarButtonItem 仍然可见。

就用

[self performSelector:@selector(presentLogin) withObject:nil afterDelay:0.1]

它会神奇地开始工作。

关于iOS5 SplitViewController 使 BarButton 在应用程序启动时处于横向 View 时可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8842921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com