0

故事板

我希望了解从 A 或 B 过渡到 UITabBarController D(我的应用程序中的主界面)的“最佳”方式 - 有条件地通过 C。

这意味着我希望以下所有内容都有效。

A -> C -> D
A -> B -> C -> D
A -> B -> D
A -> D

C 是一个模态对话框,如果用户没有在他们的个人资料中设置它,它基本上会询问用户缺少的信息。

我试过了:

  1. 在 D 的 viewDidLoad 函数中使用从 D -> C 触发的模态序列:

    ([self performSegueWithIdentifier:@"ShowNumberDialog" sender:self];)
    
  2. 在 viewDidLoad 函数中以编程方式将 C 显示为 D 上的模态:

    (void)viewDidLoad
    {
        [super viewDidLoad];
    
        NSString *deviceNumber = [[UserModel sharedSingleton] deviceNumber];
        if ([deviceNumber isEqual:[NSNull null]]) {
    
            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
            UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"NumberDialog"];
            [vc setModalPresentationStyle:UIModalPresentationFullScreen];
    
            NSLog(@"Showing device number dialog");
           [self presentModalViewController:vc animated:NO];
        }
    }
    

这些,加上我所做的无数其他“hacky”尝试似乎都没有奏效。所以我假设我不了解我应该这样做的方式的基本内容。有人可以推荐一个更好的方法吗?

4

2 回答 2

1

尝试将您拥有的代码移动ViewDidLoadViewDidAppear:(BOOL)animated. 可能发生的情况是,您正在尝试将模态对话框推送到程序中,而到选项卡页 D 的转换仍在发生,这意味着应用程序在继续加载 DViewDidAppear:(BOOL)animated时忽略了您打开模态对话框 C 的请求。您的视图最终对用户可见并完全加载。

于 2012-08-05T22:18:04.137 回答
0

所以基本上我不明白从D到C的“performSegue ...”。用户触发了一个TabBar,所以他必须点击图标才能来到这个控制器。

我会将 C 放在 B 和 D 之间。检查信息是否完整 - 如果没有 -> 转至 C,否则转至 D。

您认为这种方法存在问题吗?

于 2012-08-05T20:28:04.903 回答