我希望了解从A或B过渡到UITabBarController D(我的应用程序中的主界面)的“最佳”方式 - 有条件地通过C。
含义我希望以下所有内容都有效。
A -> C -> D
A -> B -> C -> D
A -> B -> D
A -> D
C是一个模态对话框,如果没有在个人资料中设置,则基本上会要求用户输入一条缺失的信息。
我试过了:
使用D - >的触发模态segue; C在D的viewDidLoad函数中:
([self performSegueWithIdentifier:@"ShowNumberDialog" sender:self];)
在viewDidLoad函数中以编程方式在C上显示C作为模态:
(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”尝试似乎都在起作用。所以我假设我不理解我应该这样做的基本方法。有人可以推荐一个更好的方法吗?
答案 0 :(得分:1)
尝试将ViewDidLoad
中的代码移至ViewDidAppear:(BOOL)animated
。可能发生的情况是,您正在尝试将模式对话框推送到程序,同时仍然会发生到选项卡页面D的转换,这意味着应用程序忽略了打开模态对话框C的请求,因为它继续加载D. {{1当您的视图最终对用户可见并且已完全加载时,将调用此方法。
答案 1 :(得分:0)
所以基本上我不理解从D到C的“performSegue ...”。用户触发TabBar,所以他必须点击图标才能进入该控制器。
我会将C放在B和D之间。检查信息是否完整 - 如果没有 - > Se to C,否则D。
你看到这种方法存在问题吗?