При нажатии кнопки переключитесь с раскадровки на контроллер панели вкладок, созданный в делегате приложения - PullRequest
0 голосов
/ 11 февраля 2020

предпосылка моего приложения заключается в том, что при открытии приложения отображается экран, который требует от пользователя ввода пин-кода, а когда пользователь входит в приложение, отображается приложение обмена сообщениями. Я смог с легкостью закодировать экран входа в систему, но плохо понимал, как выполнять обмен сообщениями, поэтому нашел приложение для обмена сообщениями с открытым исходным кодом, которое я поместил в свой проект (https://github.com/relatedcode/Messenger). Проблема, с которой я сталкиваюсь, состоит в том, что приложение для обмена сообщениями создано с использованием XIB вместо раскадровок, и кажется, что оно сделано в AppDelegate, и я не могу вызвать его вне AppDelegate.

Вот код для загруженной нагрузки с параметрами в делегате приложения (в настоящее время у меня есть контроллер представления пин-кода в качестве контроллера root, который называется ViewController)

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // Firebase initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        FirebaseApp.configure()
        Database.database().isPersistenceEnabled = false
        FirebaseConfiguration().setLoggerLevel(.error)

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // Push notification initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        let authorizationOptions: UNAuthorizationOptions = [.sound, .alert, .badge]
        UNUserNotificationCenter.current().requestAuthorization(options: authorizationOptions, completionHandler: { granted, error in
            if (error == nil) {
                DispatchQueue.main.async {
                    UIApplication.shared.registerForRemoteNotifications()
                }
            }
        })

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // OneSignal initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        OneSignal.initWithLaunchOptions(launchOptions, appId: ONESIGNAL_APPID, handleNotificationReceived: nil, handleNotificationAction: nil, settings: [kOSSettingsKeyAutoPrompt: false])
        OneSignal.setLogLevel(ONE_S_LOG_LEVEL.LL_NONE, visualLevel: ONE_S_LOG_LEVEL.LL_NONE)
        OneSignal.inFocusDisplayType = OSNotificationDisplayType.none

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // Firebase auth issue fix
        //-----------------------------------------------------------------------------------------------------------------------------------------
        if (UserDefaults.bool(key: "Initialized") == false) {
            UserDefaults.setObject(value: true, key: "Initialized")
            FUser.logOut()
        }

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // Shortcut items initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        Shortcut.create()

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // Manager initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        _ = Connectivity.shared
        _ = LocationManager.shared
        _ = RelayManager.shared

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // Backend observer initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        _ = Blockeds.shared
        _ = Blockers.shared
        _ = Chats.shared
        _ = Friends.shared
        _ = Groups.shared
        _ = Messages.shared
        _ = Users.shared

        //-----------------------------------------------------------------------------------------------------------------------------------------
        // UI initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        window = UIWindow(frame: UIScreen.main.bounds)

        chatsView = ChatsView(nibName: "ChatsView", bundle: nil)
        peopleView = PeopleView(nibName: "PeopleView", bundle: nil)
        groupsView = GroupsView(nibName: "GroupsView", bundle: nil)
        settingsView = SettingsView(nibName: "SettingsView", bundle: nil)


        let navController1 = NavigationController(rootViewController: chatsView)
        let navController2 = NavigationController(rootViewController: peopleView)
        let navController3 = NavigationController(rootViewController: groupsView)
        let navController4 = NavigationController(rootViewController: settingsView)

        tabBarController = UITabBarController()
        tabBarController.viewControllers = [navController1, navController2, navController3, navController4]
        tabBarController.tabBar.isTranslucent = false

        _ = chatsView.view
        _ = peopleView.view
        _ = groupsView.view
        _ = settingsView.view

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

          // instantiate your desired ViewController
        let rootController = storyboard.instantiateViewController(withIdentifier: "tutorialViewController")

        window?.rootViewController = rootController
        window?.makeKeyAndVisible()
    //-----------------------------------------------------------------------------------------------------------------------------------------
        // Sinch initialization
        //-----------------------------------------------------------------------------------------------------------------------------------------
        let config = SinchService.config(withApplicationKey: SINCH_KEY, applicationSecret: SINCH_SECRET, environmentHost: SINCH_HOST).pushNotifications(with: SINAPSEnvironment.development).disableMessaging()

        sinchService = SinchService.service(with: config)
        sinchService?.delegate = self
        sinchService?.callClient().delegate = self
        sinchService?.push().setDesiredPushType(SINPushTypeVoIP)

        NotificationCenter.addObserver(target: self, selector: #selector(sinchLogInUser), name: NOTIFICATION_APP_STARTED)
        NotificationCenter.addObserver(target: self, selector: #selector(sinchLogInUser), name: NOTIFICATION_USER_LOGGED_IN)
        NotificationCenter.addObserver(target: self, selector: #selector(sinchLogOutUser), name: NOTIFICATION_USER_LOGGED_OUT)

        return true

И вот кнопка, что, когда это действие вызывается, мне нужно приложение обмена сообщениями для быть показано.

@IBAction func enterApp(_ sender: UIButton) {

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...