J'ai créé une vue dans .xib. Sur ce fait, j'ai placé un bouton sur lequel je veux ouvrir une autre vue. J'ai assigné un storyboardid à ce mode de vue. Mais je ne peux pas appuyer sur le nouveau contrôleur, comment peut-on résoudre ce problème?
Mon code: P>
class MyView: UIView { ... @IBAction func buttonPressed(_ sender: Any) { let storyboard = UIStoryboard.init(name: "ViewController", bundle: Bundle.init()) let vc = storyboard.instantiateViewController(withIdentifier: "VC") as! ViewController let navigationController = UINavigationController.init() navigationController.pushViewController(vc, animated: true) } ... } class ViewController: UIViewController { ... }
4 Réponses :
Vous devez revenir à une déléguée à CityController contenant la vue actuelle et appelez NavigationController.Push de là P>
semble que vous avez plus d'un problème.
uiviewcontroller code> dans un UINAVIGATIONCONTROLLER CODE> LI>
- Vous créez une instance à partir d'un
utistoryboard code> avec un mauvais identifiant li>
ol> Vous devez d'abord choisir le bon utistoryboard code> que je suppose que c'est principal fort>, alors vous devez présenter le uinavigationcontroller code> Du support uiviewcontroller tond d'essayer de pousser à partir de celui-ci uiviewcontroller code> s'il a un uinavigationcontroller code>, p> Partie 1: Fixer le Instances, P>
myView.selector = pushtoMyVC
Il y a plusieurs scénaristes de mon projet, je n'utilise pas le scénario principal, mais je travaille à travers le code. Pour la mentalité ViewController, j'ai créé une scénario séparée dans ce storyboard, j'ai ajouté une carte de navigation pour la visionController
Utilisez le storyboard qui contient le VC code> que vous souhaitez présenter. Utilisez le nom du fichier
Si le nom du scénario ViewController code> Je vous recommande de le changer à quelque chose d'autre
Devrais-je ajouter dans le Func @OBJC Func Pushtomyvc () {... NavigationController.PushViewController (VC, Animation: True)}?
J'ai fait comme vous l'avez dit, mais pour une raison quelconque, rien ne se passe lorsque le bouton est enfoncé. J'utilise ce code myView.selector = pushtomyvc dans ma tableViewController (qui détient uiview) dans didiverCrow Func, a-t-il raison?
Ça ne va pas travailler à partir de didicrowow, vous devez soit placer de l'endroit où vous créez son instance, et essayez de le déboguer.
Laissez-nous Continuez cette discussion en chat .
Essayez de changer comment vous allez chercher le storyboard à partir de à p> Notez que l'ID de scénario doit être exactement Si cela affiche toujours la même erreur, je dirais que vous avez un problème avec l'adhésion à la cible du storyboard, vérifiez donc que dans l'inspecteur de fichiers situé à droite de l'éditeur XCode de l'éditeur XCode. . p> p> ViewController code>. P>
Vous devez vérifier à nouveau votre nom de fichier de scénario, car lorsque vous souhaitez initier un uiviewcontroller code> à partir d'un fichier de scénarique, le paramètre
nom code> dans
uistoire code > L'initiation doit être exactement la même que le nom du fichier de scénario.
@IBAction func buttonPressed(_ sender: Any) {
// Let's say that you have a Storyboard file named ViewController.storyboard and a UIViewController class named ViewController.swift
let destinationVC = UIStoryboard(name: "ViewController", bundle: nil).instantiateViewController(withIdentifier: "VC") as! ViewController
self.navigationController?.pushViewController(destinationVC, animated: true)
}
Vous ne pouvez pas pousser de UIView ...
Vous devez demander au contrôleur dans lequel UIView réside
Comment puis-je le faire?
où vous utilisez
myView code>?
Dans une tableViewController
Vous devez appuyer à partir de celui-ci
TableViewController code>
Quel est le nom de votre scénario?
Je dois utiliser le délégué?
Mon nom de scénario est ViewController (ViewController complète.storyboard)