0

我正在尝试通过他的子类动态地使用代码更改Root我的。UINavigationController

基本上,我的Storyboard样子是这样的:

#MARK : 应用故事板

在此处输入图像描述

如您所见,我将 设置CustomNavigationControllerInitial View Controller选项(通过Storyboard)。

我如何通过CustomNavigationController课堂设置ViewController运行应用程序时将显示的根目录?

#MARK : 'CustomNavigationController' 类

class CustomNavigationController: UINavigationController {

  // What method should i use?

}
4

1 回答 1

2

必须为右侧的两个视图控制器提供故事板标识符(在身份检查器选项卡上)。

然后在您的自定义 NavVC 中,在根目录构建您想要的视图控制器,并通过使其成为导航堆栈中唯一的视图控制器(这是一个数组)使其成为根...

- (void)viewWillAppear:animated {
    [super viewWillAppear:animated];
    UIStoryboard *storyboard = [self storyboard];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"one of the ids you set up"];
    self.viewControllers = @[ vc ];
}

迅速(非常肯定)......

override func viewWillAppear() {
    super.viewWillAppear()
    let storyboard = self.storyboard
    let vc = storyboard.instantiateViewController(withIdentifier: "one of the ids you set up")
    self.viewControllers = [ vc ] 
}
于 2017-07-14T14:27:27.947 回答