2015-03-08 12 views
5

Ich habe eine XIB-Datei, die ich einen Popup-Controller auf einem UIView erstellt habe. Dieser Popup-Controller wird animiert, wenn eine Taste auf einem View Controller 1 gedrückt wird. Ich habe dann eine Taste auf der UIView, die bei Betätigung einen weiteren View Controller (View Controller 2) darstellen soll. Code wie folgt aussieht:Präsentieren eines ViewController auf einer XIB-Datei in SWIFT

class PopUpViewControllerSwift : UIViewController { 

    @IBAction func goToVC2(sender: UIButton) { 

     self.removeAnimate() 

     let VC2: VC2 = self.storyboard?.instantiateViewControllerWithIdentifier("VC2") as VC2 
     var modalStyle: UIModalTransitionStyle = UIModalTransitionStyle.CoverVertical 
     VC2.modalTransitionStyle = modalStyle 
     presentViewController(VC2, animated: true, completion: nil) 

    } 
} 

Obwohl ich, wenn die Taste gedrückt wird, stürzt, keine Fehler oder Rückrufe oder nichts. Natürlich würde das normalerweise funktionieren, wenn es nur ein normaler View-Controller wäre, aber weil ich es in einer Popup-Ansicht mache, die auf einer anderen View animiert wurde. Ich denke, das ist das Problem?

Kann jemand helfen?

dank

Antwort

1

Stellen Sie sicher, self.storyboard nicht gleich Null ist.

Vergewissern Sie sich auch, dass VC2 eine der ViewController-Identität in der Storyboard-Datei ist.

Ich hoffe, es könnte Ihnen helfen.


wenn VC2 in einer Storyboard-Datei ist, versuchen Sie folgenden Befehl verwenden VC2

let storyboard = UIStoryboard(name: "YourStoryboardName(maybe 'Main')", bundle: nil) 
let vc2 = storyboard.instantiateViewControllerWithIdentifier("VC2") as VC2 

oder wenn VC2 ist in einer Nib-Datei zu erhalten, versuchen Sie folgenden Befehl verwenden VC2

zu erhalten

+3

Wenn der VC, der präsentiert wird, kommt von einem XIB dann wird es kein Storyboard haben ... – Wain

+0

self.storyboard kommt als nil zurück? Warum ist das und wie überwinde ich es? Danke für die gute Antwort übrigens. –

6

Ich tat dies in einer UICollectionViewdidSelectItemAtIndexPath Methode.

// Register Nib 
let newViewController = NewViewController(nibName: "NewViewController", bundle: nil) 

// Present View "Modally" 
self.presentViewController(newViewController, animated: true, completion: nil) 

stelle ich die ID des ViewController auf die gleiche wie die Dateinamen so würde ich das Recht ViewController zu verweisen sicher sein.

Verwandte Themen