【发布时间】:2014-10-20 14:05:45
【问题描述】:
我在我的应用程序的 iPad 迭代上配置了 UISplitViewController,在纵向模式下,有一个 UIBarButtonItem 调用主视图。在横向中,始终显示此视图(主视图和详细视图)。
因为 iPad 版本对我的用户来说是新的,并且因为他们习惯于在 iPhone 上看到标签栏,所以我想确保提醒用户注意菜单的去向。
我希望在用户第一次启动应用时显示我的主视图。
因此,当用户按下UIBarButtonItem 时,会显示主视图,但在第一次启动应用程序时,我希望显示主视图(即按下 UIButton BarButtonItem)。
我熟悉检查应用程序何时首次启动的过程。我只需要知道如何让按钮被调用。
我在详细信息中有这段代码:
#pragma mark - Split View Handler
-(void) turnSplitViewButtonOn: (UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *) popoverController {
barButtonItem.title = NSLocalizedString(@"Master", @"Master");
_splitViewBarButtonItem = barButtonItem;
[self.navigationItem setLeftBarButtonItem:barButtonItem animated:YES];
self.masterPopoverController = (EnvylopeMasterTableViewController *)popoverController;
}
-(void)turnSplitViewButtonOff
{
NSLog(@"SplitViewButtonOff Called");
// Called when the view is shown again in the split view, invalidating the button and popover controller.
[self.navigationItem setLeftBarButtonItem:nil animated:YES];
_splitViewBarButtonItem = nil;
self.masterPopoverController = nil;
}
-(void) setSplitViewButton:(UIBarButtonItem *)splitViewButton forPopoverController:(UIPopoverController *)popoverController
{
NSLog(@"Split View Being Called");
if (splitViewButton != _splitViewBarButtonItem) {
if (splitViewButton) {
NSLog(@"Split View Button Being Called");
[self turnSplitViewButtonOn:splitViewButton forPopoverController:popoverController];
} else {
[self turnSplitViewButtonOff];
NSLog(@"Split View Button Not Being Called");
}
}
}
这是我在 Master 中的代码:
#pragma mark - Split View Delegate
- (void)splitViewController:(UISplitViewController *)splitController willHideViewController:(UIViewController *)viewController withBarButtonItem:(UIBarButtonItem *)barButtonItem forPopoverController:(UIPopoverController *)popoverController
{
UINavigationController *navController = [[[self splitViewController ] viewControllers ] lastObject ];
id vc = [[navController viewControllers] firstObject];
self.popover = popoverController;
[vc setSplitViewButton:barButtonItem forPopoverController:popoverController];
}
- (void)splitViewController:(UISplitViewController *)splitController willShowViewController:(UIViewController *)viewController invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem
{
UINavigationController *navController = [[[self splitViewController ] viewControllers ] lastObject ];
id vc = [[navController viewControllers] firstObject];
self.popover = nil;
[vc setSplitViewButton:nil forPopoverController:nil];
}
应用程序启动时,NSLog“Split View Being Called”和“Split View Button Being Called”正在输出到控制台,但尚未按下按钮且未显示主视图.
我希望这是有道理的,如果有人对此有任何指导,我将不胜感激。
【问题讨论】:
标签: ios objective-c ipad uisplitviewcontroller uibarbuttonitem