Как разрешить проблему «Значение типа «AppDelegate» не имеет члена «NavigationController» » для «SideMenu» CocoaPod?

#ios #swift #swift5 #side-menu

#iOS #swift #swift5 #боковое меню

Вопрос:

Я использую Cocoapod ‘SideMenu’, и я скопировал и вставил код для добавления контроллеров представления в мой AppDelegate.swift, как он говорит, и все хорошо, кроме addPanGesture и addScreenEdgePanGesture. Вот мой код для всего моего AppDelegate.swift:

 import UIKit
import SideMenu
    
@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
        // Define the menus
        let leftMenuNavigationController = SideMenuNavigationController(rootViewController: UIViewController())
        SideMenuManager.default.leftMenuNavigationController = leftMenuNavigationController

        let rightMenuNavigationController = SideMenuNavigationController(rootViewController: UIViewController())
        SideMenuManager.default.rightMenuNavigationController = rightMenuNavigationController

        // Setup gestures: the left and/or right menus must be set up (above) for these to work.
        // Note that these continue to work on the Navigation Controller independent of the view controller it displays!
        SideMenuManager.default.addPanGestureToPresent(toView:
            self.navigationController.navigationBar)
        SideMenuManager.default.addScreenEdgePanGesturesToPresent(toView: self.navigationController.view)


        // (Optional) Prevent status bar area from turning black when menu appears:
        leftMenuNavigationController.statusBarEndAlpha = 0
        // Copy all settings to the other menu
        rightMenuNavigationController.settings = leftMenuNavigationController.settings
    }

    // MARK: UISceneSession Lifecycle

    // If you need your SideMenu to appear from the right side
    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    
        
    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
}
  

Если кто-нибудь знает, что мне нужно добавить, чтобы устранить эти проблемы, пожалуйста, дайте мне знать!

Комментарии:

1. Ваш AppDelegate не определяет navigationController . Вы можете либо использовать свой UIWindow экземпляр, чтобы получить ссылку на UINAvigationController из корня UIViewController , либо переместить эту логику в свой корень UIViewController . Я предлагаю вам взглянуть на пример проекта (в этом проекте автор не инициализировал SideMenu в AppDelegate): github.com/jonkykong/SideMenu/tree/master/Example