Ios 更改根视图控制器
我在应用程序中更改根目录时遇到问题 我的应用程序的设计。 登录到应用程序后,我想将根vc更改为Ios 更改根视图控制器,ios,swift,Ios,Swift,我在应用程序中更改根目录时遇到问题 我的应用程序的设计。 登录到应用程序后,我想将根vc更改为UITabBarViewController,以清理堆栈 我面临着多重问题 将vc设置为应用登录操作->上的选项卡栏或在底部vc中: self.performSegue(withIdentifier: "goToMainTabBar", sender: nil) override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
UITabBarViewController
,以清理堆栈
我面临着多重问题
self.performSegue(withIdentifier: "goToMainTabBar", sender: nil)
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? TabBarViewController {
UIApplication.shared.keyWindow?.rootViewController = vc
}
}
Application tried to present modal view controller on itself. Presenting controller is TabBarViewController
TabBarViewController
viewdiload
中设置根目录
UIApplication.shared.keyWindow?.rootViewController=self
UINavigationController
中的选项卡栏项本身没有导航控制器,因此导航vc没有实例化?因为当我将进入项目vc儿童->我不能再回来了。
如果我赢了;不要更改根vc,一切正常。对于1)您不能使用segue呈现视图控制器,然后使用它替换prepare中的根视图控制器。您需要从序列图像板实例化选项卡视图控制器,然后替换根视图控制器
大概是这样的:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "TabController")
UIApplication.shared.keyWindow?.rootViewController = vc
(假设脚本名为“Main”,并且您将脚本ID设置为“TabController”
我不太清楚2的问题是什么
但是,作为一般性说明,我将以不同的方式处理此问题,而不是将登录控制器作为初始视图控制器,而是将选项卡栏作为初始控制器,然后在应用程序第一次启动时仅显示登录控制器。这样,您就完全避免了替换根控制器,而且它更受控制。F或者1)不能使用segue呈现视图控制器,然后使用它替换prepare中的根视图控制器。您需要从序列图像板实例化选项卡视图控制器,然后替换根视图控制器
大概是这样的:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "TabController")
UIApplication.shared.keyWindow?.rootViewController = vc
(假设脚本名为“Main”,并且您将脚本ID设置为“TabController”
我不太清楚2的问题是什么
但是,作为一般性说明,我将以不同的方式处理此问题,而不是将登录控制器作为初始视图控制器,而是将选项卡栏作为初始控制器,然后在应用程序第一次启动时仅显示登录控制器。这样,您就完全避免了替换根控制器,而且它更受控制。poss可能重复:@Ercell0我不这么认为,你读了我的2个问题吗?是的,我读了,也许你应该继续读这个问题,你需要将你的VC嵌入UINavigationController,然后将其添加为根VC:
。rootViewController=UINavigationController(rootViewController:tabVC)
可能重复:@Ercell0我不这么认为,你读了我的2个问题了吗?是的,我读了,也许你应该继续读这个问题,你需要将你的VC嵌入UINavigationController中,然后将其添加为根VC:。rootViewController=UINavigationController(rootViewController:tabVC)
谢谢你的解决方案。我会按照你说的去做。谢谢你的解决方案。我会按照你说的去做。