0
votes

Comment pousser un nouveau contrôleur d'affichage à partir d'une vue

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 {
...
}


9 commentaires

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 ?


Dans une tableViewController


Vous devez appuyer à partir de celui-ci TableViewController


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)


4 Réponses :


-1
votes

Vous devez revenir à une déléguée à CityController contenant la vue actuelle et appelez NavigationController.Push de là


0 commentaires

0
votes

semble que vous avez plus d'un problème.

  1. Vous essayez de pousser un uiviewcontroller code> dans un UINAVIGATIONCONTROLLER CODE> LI>
  2. 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
    


7 commentaires

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 que vous souhaitez présenter. Utilisez le nom du fichier


Si le nom du scénario ViewController 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 .



0
votes

Essayez de changer comment vous allez chercher le storyboard à partir de xxx

à xxx

Notez que l'ID de scénario doit être exactement ViewController .

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. .


0 commentaires

0
votes

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)
}


0 commentaires