2015-04-22 10 views
7

Es gibt eine große Blog unter http://www.appcoda.com/tag/swrevealviewcontroller/ Post über die in SWRevealViewController zur Einrichtung geht, die eine große Komponente für aufschiebbare Seitenmenüs ist (https://github.com/John-Lluch/SWRevealViewController)Handbuch segue mit SWRevealViewController in Swift

Leider gibt es keine schnellen Beispiele wie man einen manuellen Übergang durchführt.

Die Storyboard-Unterstützung wurde sauberer behandelt. SWRevealViewControllerSegue ist jetzt veraltet und Sie sollten stattdessen SWRevealViewControllerSegueSetController und SWRevealViewControllerSeguePushController verwenden.

Ich habe etwas entlang der Linien von versucht:

let navigationController = self.window?.rootViewController as! SWRevealViewController; 

let viewController = navigationController.storyboard?.instantiateViewControllerWithIdentifier("ImportFileSelect") as! ImportFileSelect 

navigationController.showViewController(viewController, sender: self) 

dies aber nicht funktioniert. Irgendwelche Ideen? Ich habe das Internet nach schnellen Beispielen durchforstet, mein nächster Schritt ist, objektive c zu lernen!

+0

Welche Fehler haben Sie immer und wo schieben? – EmirC

Antwort

0
  1. Laden Sie das SWRevealViewController-Projekt-Zip-Formular herunter Github.
  2. Ziehen Sie die Dateien SWRevealViewController.m und SWRevealViewController.h aus der Zip-Datei (Ordner SWRevealViewController) in Ihr Projekt und klicken Sie auf "Ja" in der Meldung "Möchten Sie einen Bridging-Header für Objective-C konfigurieren?"
  3. Werfen Sie einen Blick auf Storyboard in RevealControllerStoryboardExample2 Projekt. Entwerfen Sie Ihr Storyboard mit diesem Beispiel.
+0

Danke, aber ich habe speziell nach swift gefragt. Ich kann diesen Code hier sehen https://github.com/John-Lluch/SWRevealViewController/blob/master/RevealControllerExample2/RevealControllerProject2/RearViewController.m könnte es tun, aber ich kann dies nicht zu swift übersetzen. –

+0

Storyboards hängen nicht von Swift oder Obj-C ab. Meine Antwort ist für Swift spezifiziert, schaue auf den zweiten Schritt. –

+0

Und Ihre Verbindung ist falsch, diese Datei wird für Sie nützlich sein https://github.com/John-Lluch/SWRevealViewController/blob/master/RevealControllerStoryboardExample2/RevealControllerStoryboardExample2/en.lproj/MainStoryboard.storyboard Laden Sie alle Projekte herunter und werfen Sie einen Blick darauf . –

3

Ich habe irgendwie Fortschritte gemacht. Ich kann einen neuen View-Controller laden, aber es animiert sowieso nicht. Der Code, dies zu tun, auf einer Schaltfläche klicken ist:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let vc = storyboard.instantiateViewControllerWithIdentifier("TARGET_VIEW_CONTROLLER") as! UIViewController 
var rvc:SWRevealViewController = self.revealViewController() as SWRevealViewController 
rvc.pushFrontViewController(vc, animated: true) 
0

Dies ist nicht, wie es getan werden soll, aber zumindest habe ich einen Weg, es zu tun.

Im Tableviewcontroller, wo u die SlideOut Menü wie etwas zu tun haben:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     if(indexPath.row == <some position>){ 
      let vc: AnyObject! = self.storyboard?.instantiateViewControllerWithIdentifier("YOUR_DESTINATION_IDENTIFIER") 
      self.showViewController(vc as! SWRevealViewController, sender: vc) 
     } 

Die eine, die die Bedingung erfüllen, mit Standardanimation segue wird, nicht wie die aufschiebbare Menü normalerweise der Fall ist.

Nachdem im Storyboard, macht einen normalen Reveal-View-Controller Push-Controller, und solange es nicht die Bedingung nicht erfüllt, wird es die aufschiebbare Menü verlassen normalerweise

11

Um Sie müssen arbeiten werden folgende Schritte:

  • Sie müssen die SWRevealViewController instanziiert und dann an den root-Controller anschließen.
  • Dann instanziieren Sie den Zielcontroller.
  • Dann eine Navigationssteuerung erstellen und die Ziel Controller als RootViewController
  • schließlich die Navigationssteuerung mit SWReveal gesetzt

    let storyboard = UIStoryboard(name: "Main", bundle: nil) 
    
    let sw = storyboard.instantiateViewControllerWithIdentifier("SWRevealViewController") as! SWRevealViewController 
    
    self.view.window?.rootViewController = sw 
    
    let destinationController = self.storyboard?.instantiateViewControllerWithIdentifier("StoryboardID") as! NameOfViewController 
    
    
    let navigationController = UINavigationController(rootViewController: destinationController) 
    
    
    
    sw.pushFrontViewController(navigationController, animated: true) 
    
+0

Dieser funktioniert für mich, aber vorher muss sichergestellt werden, dass die Verbindung zum Storyboard getrennt ist. – vijay

+0

danke seine Arbeit super :-) – seggy

+0

danke! Für mich geht das –

Verwandte Themen