ios - 正确的方式设置 'Root ViewController' 到 'UINavigationController' 子类

标签 ios swift uinavigationcontroller rootviewcontroller

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

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

#MARK:应用 Storyboard

enter image description here

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

我如何通过 CustomNavigationController 类设置将在我运行应用程序时显示的根 ViewController

#MARK : 'CustomNavigationController' 类

class CustomNavigationController: UINavigationController {

  // What method should i use?

}

最佳答案

右边的两个 View Controller 必须被赋予 Storyboard标识符(在身份检查器选项卡上)。

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

- (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 ] 
}

关于ios - 正确的方式设置 'Root ViewController' 到 'UINavigationController' 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45105208/

相关文章:

uinavigationcontroller - 在转换期间使用 popViewController 闪烁白色的问题

ios - 相对于其他内容定位内容

ios - Xcode 7 警告 : object file was built for newer iOS version than being linked

ios - NSRangeException',原因 : '*** -[__NSArrayM objectAtIndex:]: index 5 beyond bounds for empty array'

ios - 如何在非脏内存中创建链接器解析数据表

iOS自定义用户界面

ios - 检查位置权限集

ios - 如何使 [load on scroll] 不继续将图像添加到 ram?

iphone - 当按下后退按钮返回到 rootViewController 时,UILabel sizeToFit 未保留

ios - 使 View Controller 不在选项卡式 View 中