2017-03-13 2 views
0

J'ai plusieurs UIViews sur mon viewController & Je voudrais appuyer sur eux pour m'amener à différents contrôleurs de vue. J'ai une sous-classe UIView personnalisé pour les apparences UIView personnalisés et depuis que je suis incapable de naviguer de la sous-classe que j'ai créé un protocole de délégué qui me permettrait de naviguer de la vue contrôleurNSUncaughtException lors de la tentative d'utilisation de la reconnaissance automatique sur UIView Sous-classe personnalisée

protocole

:

protocol TapDelegate { 
    func viewWasTapped() 
} 

Sur la vue contrôleur je vous conformez à ce protocole, a créé une instance de la sous-vue personnalisée (est icônes constante) et, enfin, je créé une fonction pour accéder à différents contrôleurs de vue:

func viewWasTapped() { 
    print("icon was tapped")  

    if icons.tag == 0 { 

     let food_Tabs_VC = self.storyBoard.instantiateViewController(withIdentifier: String(describing: FoodTabsViewController.self)) as! FoodTabsViewController 
     self.navigationController?.pushViewController(food_Tabs_VC, animated: true) 

    } else if icons.tag == 1 { 

     let movesVC = self.storyBoard.instantiateViewController(withIdentifier: String(describing: MovesViewController.self)) as! MovesViewController 
     self.navigationController?.pushViewController(movesVC, animated: true) 
    } else if icons.tag == 2 { 

     let msgLogVC = self.storyBoard.instantiateViewController(withIdentifier: String(describing: MsgLogViewController.self)) as! MsgLogViewController 
     self.navigationController?.pushViewController(msgLogVC, animated: true) 

    } else { 

     let myWorldVC = self.storyBoard.instantiateViewController(withIdentifier: String(describing: MyWorldViewController.self)) as! MyWorldViewController 
     self.navigationController?.pushViewController(myWorldVC, animated: true) 
    } 

} 

Cependant, lorsque je tente d'utiliser le geste du robinet dans mon U personnalisé IView sous-classe lorsque je tape sur UIView je reçois l'erreur d'exception non détectée, voici tap code geste:

let homeVC = HomeViewController() 

let gesture = UITapGestureRecognizer(target: self, action:#selector(homeVC.viewWasTapped)) 
self.addGestureRecognizer(gesture) 

Toute aide est appréciée

+0

Et quelle est exactement l'exception? Et quelle est la trace de pile d'exception? – SergGr

Répondre

0

lignes de code

let homeVC = HomeViewController() 

let gesture = UITapGestureRecognizer(target: self, action:#selector(homeVC.viewWasTapped)) 
self.addGestureRecognizer(gesture) 

air tout à fait suspect moi en tant que dernière ligne implique que self est une sous-classe de UIView. Et la cible du sélecteur viewWasTapped doit être de type HomeViewController. Donc probablement vous devez changer votre target dans la deuxième ligne à homeVC.