2017-04-19 1 views
0

ich verwenden möchte:Verwenden tabbarViewController.selectedViewContreller drücken nicht neben Ansicht

self.tabBarController?.selectedViewController?.navigationController?.pushViewController(vc, animated: false) 

aber in Swift nicht funktioniert hat. Aber es funktioniert, wenn ich folgendes benutze:

[self.tabBarController.selectedViewController pushViewController:nextVC animated:NO] 

in Objective-C. Warum?

+2

Warum ist nicht Ihr Swift Code das gleiche wie Ihr Objective-C-Code wie so festgelegt werden? – rmaddy

Antwort

0

In Ihrem Ziel Versuchen Sie, die tabBarController.selectedViewController angenommen wird, die UINavigationController Instanz sein, die korrekt auf der Grundlage Ihrer Viewcontroller Hierarchie wahrscheinlich ist.

Ihr schnelles Beispiel geht jedoch davon aus, dass tabBarController.selectedViewController in eine UINavigationController Instanz eingebettet ist, die nicht mit der objektiven c-Version übereinstimmt. Der Zugriff auf den navigationController gibt nil zurück, weil Sie den Navigationscontroller nach dem übergeordneten navigationController fragen (der nicht existiert).

Ihr swift Beispiel kann

guard let navigationController = tabBarController.selectedViewController as? UINavigationController else { 
    return 
} 

navigationController.pushViewController(vc, animated: false) 
+0

danke! Deine Antwort ist richtig – lzqok

1

diesen c Beispiel

tabBarController?.selectedView?.pushViewController(nextVC, animated: false) 
+0

danke, aber hat nicht funktioniert. – lzqok

Verwandte Themen