2017-03-20 5 views
0

Ich bin Anfänger auf Xamarin iOS-Entwicklung mit Visual Studio 2015 und ich fand mein erstes Zweifel/Problem.Fehler beim Versuch InstantiateViewController nach dem Klicken auf die Schaltfläche

Wenn ich versuche, einen TabController in einen NavigationController einzubetten, nachdem ich auf eine Schaltfläche geklickt habe, bekomme ich einen schwarzen Bildschirm mit weißer Tableiste unten (kein Bild oder irgendeine Konfiguration wird angezeigt).

Das ist mein Storyboard ist (es hat Navigation -> TabBarController -> 4 Viewcontrollers (Homecontroller, SearchController, MoreController, SettingController)):

enter image description here

Alle Komponenten haben Storyboard-ID.

In früheren Controller ist mein Code Pushviewcontroller etwas wie folgt aus:

WorkspaceNavigationController controller = Storyboard.InstantiateViewController("WorkspaceNavigationController") as WorkspaceNavigationController; 
if (controller != null) 
{ 
    controller.PushViewController(controller, true); 
} 

Aber ich einen schwarzen Bildschirm bekommen: S. In meinen Ausgabefenstern kann ich "Fehler" im Zusammenhang mit den Viewcontrollern sehen: "Unbekannte Klasse HomeController in der Interface Builder-Datei" und das Gleiche mit den anderen.

EDIT: Ok, der schwarze Bildschirm wird angezeigt, weil meine WorkspaceNavigationController von UIViewController erbte. Nun wird von UINavigationController vererben und ich bekomme diese Fehlermeldung: „Pushing ein Navigation-Controller nicht unterstützt wird“

Ich glaube, ich nicht die Pushviewcontroller mit Navigation verwenden kann, aber ich versuche, das gleiche mit TabBarController zu tun, mit diesem Code:

Und der Fehler ist ein anderer: "Diese Klasse ist nicht Schlüsselcodierung-kompatibel für den Schlüssel HomeController."

EDIT: änderte ich den Anruf von Navigation mit dem Controller erhalten, aber es scheint, hat keine Navigation, weil es null Wert

wirklich hat, verstehe ich nicht, wie ich das zeigen konnte. Und ich verstehe das Verhalten nicht (Weil beide (Navigation und TabBar Controller) UIViewController erben). Könnten Sie mir eine Lösung geben und wie Sie das verstehen?

Vielen Dank im Voraus!

Antwort

0

Für mich ist der richtige Weg ist,

self.tabBarController?.selectedViewController?.navigationController?.pushViewController(yourController, animated: true) 

Ihre selectedViewController ist eigentlich ein UINavigationViewController.

0

Für Ihre erste Frage: Folgen Sie diesem

  1. Stellen Sie sicher, dass Ihre WorkspaceNavigationController Klassendatei.
  2. das Storyboard Wählen Sie Datei dieser NavigationController und auch sicherstellen, dass die gelben (links von den oberen drei Ikonen der Storyboard-Datei)
  3. Und dann stellen Sie sicher, wählen, haben Sie die richtige Klassendatei zu dieser NavigationController Ansicht eingeführt.

Ich habe Bild für ein besseres Verständnis hinzugefügt.

help image

+0

Hallo! Vielen Dank im Voraus für Ihre schnelle Antwort! Ich arbeite an VS 2015 und ich habe die Klasse in Eigenschaften -> Widget -> Identität -> Klasse ausgewählt. Ich habe eine WorkspaceNavigationController.cs-Klasse in meinem Lösungsexplorer – user3535054

Verwandte Themen