2014-07-11 8 views
5

Ich verwende das "Plugin" SWRevealViewController, um eine Seitenleiste in meiner App zu erstellen. Jetzt in Objective-C, können Sie die Seitenleiste steuern den folgenden Code:Implementieren von SWRevealViewController in Swift

[self.sidebarButton setTarget: self.revealViewController]; 
     [self.sidebarButton setAction: @selector(revealToggle:)]; 
     [self.view addGestureRecognizer:self.revealViewController.panGestureRecognizer]; 

Wo sidebarButton UIBarButtonItem und IBOutlet angeschlossen ist. Jetzt versuche ich dies auf meinen Swift-Code anzuwenden und ich habe gemischte Erfolge.

Ich habe eine @IBOutlet var-Schaltfläche festgelegt. Jetzt habe ich sowohl UIBarButtonItem und UIButton ausprobiert. Als ich UIBarButtonItem versuchen, habe ich die folgende Zeile verwendet:

button = UIBarButtonItem(barButtonSystemItem: .Add, target: self.revealViewController(), action: "revealToggle:") 

Doch dies tut nichts und die Taste funktioniert nicht.

button.addTarget(self.revealViewController(), action:"revealToggle:", forControlEvents:UIControlEvents.TouchUpInside) 

Dies funktioniert die Bar schieben und in, aber nicht über Gesten: Wenn ich jedoch Schaltflächenset einen UIButton und haken diese sich mit der folgenden sein. Das Problem ist, dass ich keine UIButton zur Symbolleiste hinzufügen kann (in StoryBoard sowieso).

Also gibt es eine Möglichkeit, dies richtig zu implementieren? Ist es außerdem möglich, den Gestenerkenner hinzuzufügen?

Dank

EDIT

Okay, ich habe es geschafft, die Geste Toggle-Funktion zu erhalten, obwohl ich meine Methode denke, ein bisschen langatmig: korrigieren So

var swipeRight = UISwipeGestureRecognizer(target: self.revealViewController(), action: "revealToggle:") 
    swipeRight.direction = UISwipeGestureRecognizerDirection.Right 
    self.view.addGestureRecognizer(swipeRight) 

    var swipeLeft = UISwipeGestureRecognizer(target: self.revealViewController(), action: "revealToggle:") 
    swipeLeft.direction = UISwipeGestureRecognizerDirection.Left 
    self.view.addGestureRecognizer(swipeLeft) 

bitte .

+0

Irgendwelche Hilfe dabei? – Prateek

+0

Hallo. Ich habe das gleiche Problem mit Gesten. Ich habe deine Lösung versucht, aber es sieht nicht gut aus. Hast du einen anderen Weg gefunden? Vielen Dank. –

+1

Ich fand eine bessere Lösung für Attach-Geste. Stellen Sie es zu Ihrem Front ViewController. self.view.addGestureRecognizer (self.revealViewController(). panGestureRecognizer()); –

Antwort

2

Dank Slavik Voloshyn, obwohl ich dies früher versucht und es hat nicht funktioniert, ist die beste Methode:

self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer());

6

für die UIBarButtonItem dieses

@IBOutlet weak var sideButton: UIBarButtonItem! 

@IBAction func sideButtonPress(sender: UIBarButtonItem) { 
     revealViewController().revealToggle(sender) 
} 
1
@IBOutlet weak var menu: UIBarButtonItem! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    if self.revealViewController() != nil { 
     menu.target = self.revealViewController() 
     menu.action = "revealToggle:" 
     self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 
} 
+0

wird es helfen, wenn Sie erklären können, warum dieses Stück Code die Lösung sein sollte. – IgnazioC

0
arbeitet

SWRevealViewController ist ein Side-View-Controller, der von der in Objective-C geschriebenen Facebook-Menüsprache inspiriert wurde. Hier werde ich Ihnen zeigen, wie Sie dies in Ihrer schnell basierten Anwendung verwenden können. Wir verfolgen diesen Prozess in Oodles Technologies.

struct Bird{ 
    var name:String! 
} 

Ändern Sie die folgenden Methoden Ihrer Klasse wie unten gezeigt.

override func viewDidLoad() { 
     super.viewDidLoad() 
     birds.append(Bird(name: "Pigeon")) 
     birds.append(Bird(name: "Crow")) 
     birds.append(Bird(name: "Peacock")) 
     birds.append(Bird(name: "Duck")) 
     birds.append(Bird(name: "Parrot")) 
     birds.append(Bird(name: "Eagle")) 
    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return birds.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell 
     cell.textLabel?.text = birds[indexPath.row].name 
     // Configure the cell... 

     return cell 
    } 

Select Zelle in Tableviewcontroller aus dem Hauptstoryboard und ändern ihre Identifikatorattribute Inspektor myCell verwenden.

Machen Sie Delegaten, Datenquelle dieses TableViewController zu Selbst, indem Sie mit der rechten Maustaste auf die Tabelle klicken und auf das gelbe Symbol oberhalb des Tabellenansicht-Controllers ziehen und Delegat und Datenquelle einzeln auswählen.

Fügen Sie eine Schaltfläche zu einem anderen View-Controller hinzu, der sich jetzt MainViewController in der oberen linken Ecke dieser Ansicht befindet, und öffnen Sie MainViewController.schnell wie nebeneinander mit Assistenten Editor und erstellen Sie eine Steckdose mit dem Namen menuButton in Swift-Datei.

Fügen Sie den folgenden Code in viewDidLoad der MainViewController-Klasse hinzu.

menuButton.addTarget(self.revealViewController(), action: "revealToggle:", forControlEvents: UIControlEvents.TouchUpInside) 

Führen Sie die App aus und testen Sie sie.