2012-05-19 8 views
11

Naprawdę podoba mi się, że cały mój widok jest umieszczony w Storyboard, ale są chwile, kiedy będę miał widok, który jest wyświetlany na podstawie przycisku, który jest generowany przez kod tak nie będzie odniesienia do Segue - będzie całkowicie rozłączone w Storyboard. Nadal chciałbym go zaprojektować w scenorysie, żeby móc mieć ładny przegląd wszystkich moich ekranów.Widok obciążenia formularz StoryBoard, który nie ma Segue

Czy mogę załadować XIB (lub cokolwiek to jest w storyboardach) zaprojektowanego w scenorysie po załadowaniu UIViewControler?

+0

możesz dać nam przykład co ty próbujesz zrobić? jakie dane są odpowiedzialne za utworzenie nowego widoku ? Ogólnie proponuję utworzyć nową klasę lub utworzyć widok tej samej klasy i zależnie od tego, czy użytkownik ukryje lub wyświetli zawartość widoku. Łatwiej będzie Ci – Shawn

Odpowiedz

24

zrobić to w moich projektach:

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

Tylko upewnij się, że ustawiony identyfikator kontrolera jest prawidłowo. Można to zrobić poprzez:

  1. wybranie kontrolera w Storyboard
  2. w panelu Narzędzia, kliknij polecenie inspektora Atrybuty. Cokolwiek zdecydujesz się umieścić w polu Identyfikator, znajduje się w instrukcji "instantiateViewControllerWithIdentifier".

Mam nadzieję, że to pomoże.

+0

idealne, dokładnie to, czego szukałem - dzięki. Chociaż nie jest to absolutnie konieczne, miło jest zobaczyć wszystkie moje UIViews na jednym ekranie. – Slee

+0

Początkowo nie trening, ale potem .. '[self presentViewController: vc animowany: TAK ukończenie: NIE];' zrobił magię dla mnie w ostatniej linii. –

+0

Tak, Mayu, należy zauważyć, że użycie [self.navigationController push ...] działa tylko wtedy, gdy kontroler widoku jest osadzony w kontrolerze nawigacyjnym. – mihai

2

Musisz przypisać do ID kontrolera Storyboard ID.

IB> Pokaż inspektora> Tożsamość Tożsamość> 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) 
} 
Powiązane problemy