【发布时间】:2015-04-22 21:06:47
【问题描述】:
使用:
UIViewController *vc = [[UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil] instantiateInitialViewController];
[self presentViewController:vc animated:YES completion:^{}];
但我需要在该故事板的初始 viewController 中设置一个 BOOL。
我在 .h 中声明了 BOOL,并且 if 语句依赖于它:
if (_boolIsTrue) {
FirstView *firstView = (FirstView *)[storyboard instantiateViewControllerWithIdentifier:@"first_view"];
[self.navigationController setViewControllers:@[firstView] animated:NO];
}
else {
SecondView *secondView = (SecondView *)[storyboard instantiateViewControllerWithIdentifier:@"second_view"];
[self.navigationController setViewControllers:@[secondView] animated:NO];
}
当我尝试通过以下方式访问它时:
UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
UIViewController *vc =[storybord instantiateInitialViewController];
vc 不允许我访问 BOOL。
不确定我对 ViewController 和 Storyboard 有什么不了解,但我非常感谢您的帮助。
谢谢
解决后编辑: 韦恩完全正确!
这是确切的工作代码,因为我的差距跨越了几个不同的概念。如果它帮助别人:
UINavigationController *nav = [[UIStoryboard storyboardWithName:@“MyStoryBoard” bundle:nil] instantiateInitialViewController];
InitialLockSetupViewController *vc = nav.viewControllers.lastObject;
vc.isBoolTrue = YES;
[self presentViewController:nav animated:YES completion:^{}];
因此,您必须获取具有正确类型的 View Controller 才能访问 var。但是,如果它没有设置为情节提要中的初始视图控制器,则必须将其作为堆栈上的根(第 0 个)视图控制器。那么你必须记住推送导航控制器而不是视图控制器。
再次感谢韦恩。这是一个很好的教训!
【问题讨论】:
标签: ios objective-c uiviewcontroller storyboard