我正在创建一个应用程序,其中的功能,如如果用户登录,该应用程序将转到主页,否则它将转到登录页面.因此,我在AppDelegate中添加了以下代码来更改初始控制器,但我的代码不起作用.

  let storyboard : UIStoryboard = UIStoryboard(name:"Main", bundle: nil)

  let navigationController : UINavigationController = storyboard.instantiateInitialViewController() as! UINavigationController
  let rootViewController:UIViewController = storyboard.instantiateViewController(withIdentifier: "MyViewController") as! MyViewController
            navigationController.viewControllers = [rootViewController]
  self.window?.rootViewController = navigationController
  self.window?.makeKeyAndVisible()

如果用户登录,我想更改初始控制器.我想通过编程实现我的要求,而不是使用故事板

推荐答案

你可以通过移除Scene Delegate来解决你的问题,你可以注释整个类,然后也可以注释App Delegate类中的Scene Delegate方法,比如:

/*
    func application(_ application: UIApplication, 
    configurationForConnecting connectingSceneSession: UISceneSession, 
    options: UIScene.ConnectionOptions) -> UISceneConfiguration {
   
       return UISceneConfiguration(name: "Default Configuration", 
        sessionRole: connectingSceneSession.role)
   }

    func application(_ application: UIApplication, 
     didDiscardSceneSessions 
         sceneSessions: Set<UISceneSession>) {
    }
*/
 

并从info.pist中删除属性Application Scene Manifest 现在运行您的代码,您将能够更改初始控制器.实际上,当我们有两个类时,Scene Delegate将处理这些事情,因此通过删除Scene Delegate,AppDelegate将工作

Ios相关问答推荐

有没有办法观察滚动的SwiftUI图表的内容偏移量?

OBJC @selector 在另一个实现中不起作用

在 Android 和 iOS 应用程序上下文中阻止后台线程有哪些缺点?

滚动 swiftUI 列表时,未调用单元格的任务修饰符.怎么修?

iOS 如何使用 Alamofire 解析 JSON 可编码数组

视图之间的 SwiftUI 过渡,没有过渡

从视图模型中更新 EnvironmentObject

如何在字段包含字典数组的firestore上查询?

如何在 Swift 中从另一个视图控制器将元素附加到数组中

Xcode 项目格式:3.1、3.2、6.3 和 8.0 有什么区别?

在 Swift 中上传带参数的图像

UITableView 背景 colored颜色 在 iPad 上总是白色

在 iPhone 应用程序中使用 SSL - 出口合规性

iOS 7 半透明模态视图控制器

如何从 UIPickerView 获取选定的值

自动布局:是什么创建了名为 UIView-Encapsulated-Layout-Width & Height 的约束?

如何在ios中生成UUID

检测应用程序何时进入我的视图背景的最佳方法是什么?

从 Swift 转换为 Objective-c 的工具

UICollectionView:必须用非零布局参数初始化