2017-01-17 1 views
0

Ich habe eine Tabellenansicht als Side-Menü auf einem ViewController Xib, die als Unteransicht hinzugefügt werden muss, indem Sie auf eine bestimmte Menü-Schaltfläche klicken. Eine Schaltfläche zum Abmelden existiert auf Seite unten. Ich möchte popToRootViewController ausführen auf den Knopf des Logos klicken.Seitenmenü ausblenden Problem

Ich füge Menü wie folgt aus:

menuViewController?.view.frame = self.transparentView.frame 
menuViewController?.didMove(toParentViewController: self) 
menuViewController?.view.frame.size.width = (mapView.frame.size.width)/1.5 
menuViewController?.view.tag=10 
self.transparentView.addSubview((menuViewController?.view)!) 
+0

Bitte geben Sie einen Code, und sagen Sie klar, was Sie erreichen möchten? –

+0

Bitte geben Sie Ihre Codebausteine ​​an, wo Sie Probleme hatten? Versuchen Sie zu verwenden: REFrostedViewController für Folie Menü, Seine einfach zu bedienen und groß geschrieben –

+0

siehe Ich habe meine Frage –

Antwort

1

wenn Sie Single Navigation Controller Kette in Ihrer Anwendung haben, können Sie leicht unter Code verwenden, auf RootViewController zu navigieren.

let appDelegate = UIApplication.shared.delegate as! AppDelegate 

if let navigationController = appDelegate.window?.rootViewController as? UINavigationController { 
    navigationController.popToRootViewController(animated: true) 
} 

Hoffe, dass dies hilft.

+0

Ich schätze Ihren Kommentar, aber ich brauche etwas anderes.Mein Szenario ist so - ich habe ein Side-Menü in Ziel-C-Klasse mit Xib geschrieben, die ich über Präsentieren Methode nicht drücken, dann möchte ich Logout-Methode ausführen, die mich navigieren kann Root-Controller.Ich logge mich über Facebook, wenn Benutzer bereits angemeldet dann App-Delegat direkt zur Zielseite navigieren nicht diese fb Logging-Seite.Eine andere Sache alle meine Code in Storyboard mit swift außer Seiten-Menü, das in Ziel c ist. –

+0

Ok, Sie brauchen den gleichen Code in Objective C oder höher Code funktioniert nicht an Ihrem Ende? – CodeChanger

+0

Nein, der obige Code funktioniert nicht –

1

Verwenden Sie NotificationObserver, um dieses Ziel zu erreichen.

Objective-C

In Ihrem Mainviewcontroller des viewDidLoad Methode schreiben Code unten.

[[NSNotificationCentre defaulCentre] addObserver:self withName:"LoggoutNotificationMessage" selector:@selector(shouldLogout:) withObject:nil]; 

jetzt diese Methode in dieser Klasse hinzufügen

-(void) shouldLogout { 
    //Code to Pop to Root VC 
} 

Jetzt in Ihrem Viewcontroller Klasse, wo Sie Seitenmenü des Tableview Delegierten und Datenquelle umgesetzt haben.

In didSelectRowAtIndexPath: Methode schreiben Sie unter Zeile.

[[NSNotificationCentre defaultCentre] postNotification:"LoggoutNotificationMessage" withObject:nil] 

Swift 3.0 // in Haupt ViewController.swift der viewDidLoadMethod

NotificationCenter.default.addObserver(self, selector: #selector(shoudLogout), name: NSNotification.Name(rawValue: "LogoutNotificationMessage"), object: nil) 


@objc func shoudLogout() { 
    //Pop to root vc here 
} 

Jetzt in Ihrem Viewcontroller Klasse, wo Sie Seitenmenü des Tableview Delegierten und Datenquelle umgesetzt haben.

In didSelectRowAtIndexPath: Methode schreiben Sie unter Zeile.

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "LogoutNotificationMessage"), object: nil) 
Verwandte Themen