Проблема с SWRevealViewController для Xcode 11 - PullRequest
1 голос
/ 13 октября 2019

У меня есть весь мой код, настроенный для SWRevealViewController, он отлично работал на Xcode 10.3 и даже на Xcode 11.2 beta 2, но по какой-то причине он не работает с последним выпуском обновлений из App Store, и я получаю эту ошибку,на делегате приложения

Тема 1: EXC_BAD_ACCESS (код = 1, адрес = 0x48)

экран после переключения с моим контроллером SWRevealView. Любые идеи, как я мог бы это исправить

Просто странно для меня, поскольку у меня никогда не было проблем с SWRevealViewController до

, вот код, который я использую в моем ViewDidLoad для всех моих контроллеров представленияи код для моего делегата приложения

    menuButton.target = self.revealViewController()
    menuButton.action = #selector(SWRevealViewController.revealToggle(_:))

    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

import UIKit
import Firebase

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Onboarding
        let launchedBefore = UserDefaults.standard.bool(forKey: "hasLaunched")
        self.window = UIWindow(frame: UIScreen.main.bounds)
        let launchStoryboard = UIStoryboard(name:"Onboarding", bundle: nil)
        let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
        var vc: UIViewController

        if launchedBefore {
            vc = mainStoryboard.instantiateInitialViewController()!
        } else {
            vc = launchStoryboard.instantiateViewController(withIdentifier: "AgeVC")
        }
        UserDefaults.standard.set(true, forKey: "hasLaunched")
        self.window?.rootViewController = vc
        self.window?.makeKeyAndVisible()
        // Onboarding End

        FirebaseApp.configure()

        // Override point for customization after application launch.
        UITabBar.appearance().barTintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        UITabBar.appearance().tintColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
        UITabBar.appearance().unselectedItemTintColor = #colorLiteral(red: 0.2, green: 0.9333333333, blue: 0.4588235294, alpha: 1)

        UINavigationBar.appearance().barTintColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        UINavigationBar.appearance().tintColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
        UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black]

        return true
    }

    func applicationWillResignActive(_ application: UIApplication) {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
    }

Слайд-меню

import UIKit

let kStringTransfer = "StringTransferNotification"

class MenuViewController: UITableViewController {

    @IBOutlet weak var addressLabel: UILabel!
    @IBOutlet weak var addressBtn: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector: #selector(setString(notify:)), name: NSNotification.Name(rawValue: kStringTransfer), object: nil)

        self.revealViewController().rearViewRevealWidth = self.view.frame.width-100//put the width you need
        self.revealViewController().rearViewRevealOverdraw = 0
    }

    @objc func setString(notify: Notification) {
        //set search bar string to text field
        addressLabel.text = notify.object as? String
    }

    func userDidEnterInformation(info: String) {
        addressLabel.text = info
    }
}

на стороне не работает несколько раз, прежде чем он выходит из строя

1 Ответ

0 голосов
/ 16 октября 2019

Нашел ответ, ИТ просто не хватает класса SceneDelegate в коде, чтобы он работал, теперь он работает гладко

...