Chcę ustawić program UIViewController w programistycznie NavigationController, jednak metoda loadView lub viewDidLoad wywoływana.loadView z UIViewController nie nazywany
To jest mój kod w app delegata:
MyViewController *viewController = [[MyViewController alloc] init];
UIView *view = [[UIView alloc] initWithFrame:window.frame];
viewController.view = view;
UINavgationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:[navController view];
[window makeKeyAndVisible];
Kiedy uruchomić aplikację widzę navigationbar, ale nie ma połączenia z loadview. czego mi brakuje? Myślałem loadview jest wywoływana po wywołaniu view
Edit
MyViewController *viewController = [[MyViewController alloc] init];
[viewController view]; // doesn't look right?
UINavgationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:[navController view];
[window makeKeyAndVisible];
edytowany kierunku komentarzu Jonasza, ale loadview nadal nie zostanie wywołana.
Odnośnie drugiej uwagi, przypisanie widoku oznacza twoją drugą i trzecią linię kodu, prawda? To ma sens. Ale jak nazwałbym gettera w tym przypadku? –
'[viewController view]' wywołuje getter widoku, ale nie powinno być potrzeby, aby to zrobić bezpośrednio. "UINavigationController", do którego dodałeś kontroler widoku, w pewnym momencie wywoła ten proces, aby dodać widok kontrolera do hierarchii widoku. Czy możesz udostępnić swoją implementację kontrolera widoku? Wygląda na to, że coś się dzieje. – Jonah
Jest to po prostu pusty szablon UIViewController z Xcode, ale nie wywołuje metody (view) oprócz init. Tam próbowałem ustawić taki widok: - (id) init { \t self ((self = [super init])) { \t UIView * view = [[przydziela UIView] initWithFrame: [[UIScreen mainScreen] ograniczenia] ]; \t self.view = widok; \t [Wyświetl wersję]; \t} return self; } –