2013-08-30 6 views
12

Przepraszamy za chyba noob pytanie, chłopaki. Jestem nowy w rozwoju iOS.Jak mogę utworzyć kontroler widoku zdefiniowany w XIB?

Jak utworzyć kontroler widoku zdefiniowany w XIB?

Po utworzeniu nowej klasy odziedziczonej po UIViewController w Xcode za pomocą "Nowego pliku" i zaznaczeniu pola wyboru with XIB tworzy się plik XIB, który nie ma elementu viewController. Ale raczej ma on placeholder, który wskazuje na UIViewController, który jest zdefiniowany jako w kodzie.

Ale widzę, że możesz sam utworzyć kontroler w Konstruktorze interfejsów i określić dla niego customClass.

Niestety to nie działa dla mnie. Otrzymuję loaded the "EmbeddedViewController" nib but the view outlet was not set błąd w czasie wykonywania. Ale wierzyłem, że właściwość view musi być ustawiona automatycznie przez moduł ładujący, ponieważ wszystko jest zdefiniowane przez XIB. Działa to w ten sposób dla TableView i jego komórek na przykład.

Proszę podać przykład jak to zrobić?

stworzyłem przykładowy projekt: https://github.com/cppexpert/SampleWithNib

Kontroler w pytaniu jest EmbeddedViewController

Odpowiedz

4

Okazało się, że te formanty istnieją w IB dla projektów Storyboard.

+0

To jest prawdziwa odpowiedź. Doszliście do właściwego wniosku, a inni ludzie po prostu nie zrozumieli tego pytania. – SuitedSloth

2

Podczas tworzenia kontrolera widoku z XIb poprzez „nowy plik”, Xcode generuje UIView i łączy go z view gniazdka automatycznie. Wygląda na to, że zmieniłeś coś po tym, jak Xcode wygenerował plik Xib. W takim przypadku należy ręcznie połączyć widok z gniazdem view.

+0

Tak, to działa. To byłby standardowy XIB Xcode. Ale zastanawiałem się, jak mogę to zrobić bez korzystania z Właściciela pliku i po prostu użyć elementu 'viewController' w XIB? – expert

+0

Nie potrzebujesz elementu 'viewController'. W większości przypadków właścicielem pliku jest kontroler widoku. – cahn

+1

Jeśli nie jest to konieczne, to dlaczego mogę utworzyć "viewController" w programie Interface Builder? :) – expert

7

Tworzenie jednego XIB za UIViewController

Każdy XIb mają właściciela obiektu pliku za ustawianie tam klasę UIViewController. Kliknij Właściciel pliku i wybierz polecenie EmbeddedViewController na jego klasie

Następnie przeciągnij główne UIView nie do klasy UIViewController, a następnie podłącz ten widok z właścicielem pliku jako widokiem. UIViewController wystarczy użyć, aby przeciągnąć do podstawowego projektu StoryBoard.

https://github.com/lequysang/gitfiles02/blob/master/SampleWithNib-master.zip

+0

Dziękujemy! Jaki jest cel elementu 'viewController' w' EmbeddedViewController.xib' w twojej wersji pliku? – expert

+0

Zapomniałem usunąć. Po prostu go usuń –

+0

Ale otrzymam prawie tyle, co Xcode generuje z szablonu .. – expert

0

Jeśli utworzyć nowy widok w xib.set właściciela pliku do klasy niestandardowej. Lub jeśli chcesz po prostu utworzyć widok. Następnie

NSArray* test1 = [[NSBundle mainBundle] loadNibNamed:@"View" owner:self options:nil]; 
self.myViewFromNib = [test1 objectAtIndex:0]; 

Gdzie myViewFromNib to obiekt widoku i „Widok” to stalówka imię.

+0

Pytanie dotyczyło kontrolera widoku, a nie widoku. –

Powiązane problemy