ios - 在应用程序第一次运行时显示隐藏的主视图 Controller

标签 ios objective-c ipad uisplitviewcontroller uibarbuttonitem

我在我的应用程序的 iPad 迭代中配置了一个 UISplitViewController,在纵向模式下,有一个调用主视图的 UIBarButtonItem。在横向中,此 View 始终显示(主视图和详细 View )。

因为 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”正在输出到控制台,但是按钮还没有被按下,Master未显示 View 。

我希望这是有道理的,如果有人对此有任何指导,那将不胜感激。

最佳答案

我认为一个不错的方法是利用 NSUserDefaults 来检查它是否是用户的第一次启动。

您可以引用this post了解如何做到这一点。

存储该值后,就像在应用程序启动时有条件地检查它并进行“首次应用程序启动”设置(如果这确实是他们的第一次启动)一样简单。

编辑:

您可以在应用程序打开后根据用户是否是第一次以编程方式触摸按钮。查看this .

关于ios - 在应用程序第一次运行时显示隐藏的主视图 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26467622/

相关文章:

objective-c - NSData UIImageJPEGRepresentation 未写入 SQLite fmdb

ios - 线程安全队列

iphone - 条件不满足时退出函数

ios - 无法找到 `GoogleSymbolUtilities (~> 1.1)` 所依赖的 `FirebaseAnalytics` 规范

iPhone - 如何使用具有复杂参数的performSelector?

ios - 在 Xcode 4.3 中点击背景关闭 subview

ios - 如果我在 XIB 中设计了 textField,如何以编程方式更改 UItextField 的 placeHolder 文本

ios - 如何更改 Core Plot 中的 y 轴增量?

ios - 循环之前或循环内部的惰性实例化

ios - 我所有 View Controller 的中央数据源