通过 'UINavigationController' 子类的正确方式设置 'Root ViewController'

Correct way setting 'Root ViewController' thru 'UINavigationController' subclass

我正在尝试动态地,使用代码通过他的子class更改我的UINavigationControllerRoot

基本上,我的 Storyboard 看起来像这样:

#MARK:应用故事板

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

我怎样才能通过CustomNavigationControllerclass设置根目录ViewController,当我运行应用?

#MARK : 'CustomNavigationController' class

class CustomNavigationController: UINavigationController {

  // What method should i use?

}

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

然后在您的自定义 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 ];
}

在swift(很确定)...

override func viewWillAppear() {
    super.viewWillAppear()
    let storyboard = self.storyboard
    let vc = storyboard.instantiateViewController(withIdentifier: "one of the ids you set up")
    self.viewControllers = [ vc ] 
}