Résiliation d'application en raison de uncaught exception 'NSInvalidArgumentException', la raison: '-[_.AppDelegate ajouter:]: unrecognized sélecteur

J'ai créé un scénario appelé main.storyboard et créé un AddBtnViewController avec storyboard ID "addBtnVC". Le Délégué d'Application, j'ai initialisé un onglet de la barre avec trois contrôleurs de vue de la programmation. Pour l'un de barre d'onglet vue des contrôleurs, j'ai créé un bouton ajouter qui seraient de passage à l'AddBtnViewController par programmation. Cependant, j'ai reçu ce message d'erreur:

uncaught exception 'NSInvalidArgumentException', reason: '-[_.AppDelegate add:]: unrecognized selector sent to instance 0x7f91cb422a30'

Mon code:

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
         //Make add btn for View Controller 1 of Navigation Bar
         let addBtn = UIButton(frame: CGRectMake(0, 0, 30, 30))
         addBtn.addTarget(self, action: #selector(ViewController1.add), forControlEvents: .TouchUpInside)

         let rightBarButton = UIBarButtonItem()
         rightBarButton.customView = addBtn
         NavController.navigationBar.topItem?.rightBarButtonItem = rightBarButton

         return true
    }
}

class ViewController1: UIViewController {
    let addBtnVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("addBtnVC")

    func add(sender: UIButton!) {
        if let addBtnVC = storyboard!.instantiateViewControllerWithIdentifier("addBtnVC") as? AddBtnViewController {
            presentViewController(addBtnVC, animated: true, completion: nil)
        }
    }
}

Comment puis-je corriger cette erreur?

Pour la postérité:

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
         let VC1 = UIViewController()

         //Make add btn for View Controller 1 of Navigation Bar
         let addBtn = UIButton(frame: CGRectMake(0, 0, 30, 30))
         addBtn.addTarget(VC1, action: #selector(VC1.add(_:)), forControlEvents: .TouchUpInside)

         let rightBarButton = UIBarButtonItem()
         rightBarButton.customView = addBtn
         NavController.navigationBar.topItem?.rightBarButtonItem = rightBarButton

         return true
    }
}

class ViewController1: UIViewController {
    let addBtnVC:AddButtonViewController = AddButtonViewController()

    func add(sender: UIButton!) {
        let navController = UINavigationController(rootViewController: addBtnVC)
        navController.navigationBar.tintColor = colorPalette.red
        self.presentViewController(navController, animated: true, completion: nil)
    }

}
  • Aussi ce que vous essayez de faire avec ce "ViewController1.navigationBar"? Vous faites référence à la classe ViewController1, pas un objet de type ViewController1. Comprendre la différence, il est très crucial.
  • C'était une faute de frappe dans mon code. Je l'ai corrigé
InformationsquelleAutor Amanda | 2016-08-28