Mam problem z ustawieniem domyślnego widoku narzędzia View View w programie Interface Builder. Oto moja konfiguracja:UINavigationController NIB wymaga, aby właściciel pliku miał widok?
Mam aplikację opartą na umieszczenie zakładek gdzie załadować kontroler nawigacji jako modalny widoku ...
MyNavCtrlrSubClass *menu = [[MyNavCtrlrSubClass alloc]initWithNibName:@"MenuController" bundle:nil];
[tabBarController presentModalViewController:menu animated:anim];
sama MenuController ma następującą strukturę:
MenuController.xib File's Owner (MyNavCtrlrSubClass : UIViewController) Navigation Controller (UINavigationController) Navigation Bar (UINavigationBar) Root View Controller (Nib Name is set to load AnotherViewController.nib) Navigation Item -> (UINavigationItem)
to wszystko działa dobrze, z wyjątkiem tego, że po załadowaniu MyNavCtrlrSubClass pojawia się następujący błąd:
Loaded the "MenuController" nib but the view outlet was not set
Jest jasne, dlaczego tak się dzieje - Właściciel pliku nie ma połączenia z wylotem dla swojego widoku. Pytanie brzmi, co powinienem ustawić jako jego pogląd, i czy coś trzeba najpierw ustawić? Pasek nawigacyjny jest jedynym kandydatem w MenuController.xib, ale dzięki temu rozmiar samego UINavigationBar zostanie zmieniony na tryb pełnoekranowy.
Najwyraźniej brakuje mi czegoś w IB, ale co? MyNavCtrlrSubClass.m nie ma samego kodu, z wyjątkiem IBOutlet dla UINavigationController. Czy popełniam błąd, próbując ustawić to w całości w IB? Pomysł polega na zachowaniu modalnego kontrolera nawigacyjnego w jednym stalówce i wszystkich widokach ładowanych w oddzielnych stalówkach, ale ponieważ MenuController jest tylko pojemnikiem do nawigacji i nie zawiera żadnych widoków, oczywiście projektuję go źle. :)
Jeśli zastanawiasz się, dlaczego nie projektuję tego w inny sposób, to dlatego, że staram się być posłuszna mojemu (prawdopodobnie błędnie) postrzeganiu tego, w jaki sposób IB prosi Cię o zbudowanie idealnej hierarchii.
Każda pomoc zostanie bardzo doceniona.
Dzięki za informacyjną odpowiedź! Zaraz zobaczę, co mogę z tym zrobić, i wkrótce opublikuję. Na razie pozwól, że zapytam: jak załadowałbyś modalną stalówkę kontrolera nawigacji, projektując jak najwięcej w Konstruktorze interfejsów? Czy jest to konieczne, jak w twoim przykładzie, aby skonfigurować kontroler kontrolera widoku, a następnie programowo utworzyć kontroler nawigacyjny lub czy mogę zdefiniować hierarchię widoku tylko w IB? –
UWAGA: wygląda na to, że tworzenie sterownika nawigacyjnego programowo oznacza, że muszę również programowo ustawić hierarchię kontrolera widoku, a następnie oddalam się od IB, zaczynając od kontrolera nawigacyjnego w dół. –
Możesz utworzyć kontroler nawigacyjny i kontroler widoku root w kodzie i załadować widok dla kontrolera widoku root w IB. To nie będzie niezręczne. Można również utworzyć kontroler nawigacyjny, a jest to kontroler widoku root w oddzielnym widoku XIB z widoku kontrolera widoku głównego. Ten oddzielny XIB to zazwyczaj plik MainWindow.xib. Po załadowaniu pliku MainWindow.xib zostaną utworzone dwa kontrolery widoku. Kiedy kontroler widoku root potrzebuje najpierw widoku, załaduje go z drugiego pliku XIB. To typowy sposób na zrobienie tego. –