2012-05-19 8 views
11

Ich mag es wirklich, wenn alle meine Ansichten im Storyboard liegen, aber es gibt Zeiten, in denen ich eine Ansicht habe, die basierend auf einer Schaltfläche angezeigt wird, die durch Code generiert wird Es wird keine Segue-Referenz geben - sie wird im Storyboard vollständig getrennt. Ich würde es trotzdem gerne im Storyboard gestalten, damit ich einen schönen Überblick über alle meine Bildschirme haben kann.Ansichtsfenster laden StoryBoard ohne Segue

Kann ich das XIB (oder was auch immer in einem Storyboard) im Storyboard laden, wenn ein UIViewControler geladen ist?

+0

Können Sie uns ein Beispiel geben, was wollen Sie tun? Welche Art von Daten sind für die Erstellung der neuen Ansicht verantwortlich? Im Allgemeinen suggest du, dass du eine neue Klasse erstellst oder eine Ansicht mit der gleichen Klasse hast und abhängig vom Benutzer entdeckst du den Inhalt der Ansicht. Es wird einfacher für Sie zu – Shawn

Antwort

24

Ich tue dies in meiner Projekte:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"MyViewController"]; 
[self.navigationController pushViewController: myController animated:YES]; 

So stellen Sie sicher, dass Sie Ihren Controller die Kennung korrekt eingestellt haben. Sie können diese durch tun:

  1. den Controller in der Storyboard
  2. in der Utilities-Fenster klicken Sie auf die Attribute Inspektor auswählen. Was auch immer Sie in das Feld Identifier eingeben, ist in der Anweisung 'instanziateViewControllerWithIdentifier' enthalten.

Ich hoffe, das hilft.

+0

perfekt, genau das, was ich gesucht habe - danke. Obwohl es nicht unbedingt notwendig ist, ist es schön, alle meine UIViews auf einem Bildschirm zu sehen. – Slee

+0

Zunächst war es nicht Workout, aber dann .. '[selbst anwesendViewController: vc animiert: ja Abschluss: NEIN];' hat die Magie für mich in der letzten Zeile. –

+0

Ja Mayu, es sollte beachtet werden, dass die Verwendung von [self.navigationController push ...] nur funktioniert, wenn dieser View-Controller in einen Navigationsansicht-Controller eingebettet ist. – mihai

2

Sie müssen Ihrem View-Controller eine Storyboard-ID zuweisen.

IB> Zeigen Sie den Inspektor Identität> Identität> Storyboard ID

Storyboard ID

Swift

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
let viewcontroller = storyboard.instantiateViewControllerWithIdentifier("viewController") 
        as? UIViewController 
if let navigationController = self.navigationController { 
    navigationController.pushViewController(viewcontroller!, animated: true) 
} 
Verwandte Themen