【问题标题】:Conditional Navigation Controller Root条件导航控制器根
【发布时间】:2013-08-14 09:58:50
【问题描述】:

我在导航控制器中有一个标签栏控制器。我想根据用户是否登录来更改导航控制器的根视图。我该怎么做?我不想将代码放在didFinishLaunchingWithOptions: 或任何其他 AppDelegate 方法中,因为它不会是用户首先看到的内容。

【问题讨论】:

标签: ios uinavigationcontroller


【解决方案1】:

你是对的,它应该是:

- (void) goNext {
NextViewController* nextWindow = [[NextViewController alloc] initWithNibName:@"NextView" bundle:nil];
[self.navigationController setViewControllers:[NSArray arrayWithObject:nextWindow] animated:YES];
}

由于不能弹出根视图控制器,所以可以改用以下方法:

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated

这是一个链接 apple docs 这个方法。

【讨论】:

  • 所以我将 goNext 代码作为 NextViewController* nextWindow = [[NextViewController alloc] init]; [self.navigationController setViewControllers:[NSArray arrayWithObject:nextWindow] animated:YES]; 输入,因为我使用的是故事板而不是 Nib,但是当它更改 ViewControllers 时,屏幕是黑色的。它没有我放入的按钮或任何其他 UIElement。
  • 我发现了问题。因为我使用的是 Storyboard,所以这段代码对我有用。 - (void) goNext { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil]; NextViewController* nextWindow = [storyboard instantiateViewControllerWithIdentifier:@"NextView"]; [self.navigationController setViewControllers:[NSArray arrayWithObject:nextWindow] animated:YES]; }
  • 酷,很高兴你让它工作。是的,我应该提到在使用情节提要时重新实例化控制器是必要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2020-07-14
  • 2012-12-02
  • 1970-01-01
  • 2017-05-14
相关资源
最近更新 更多