我想以編程方式在NavigationController中設置一個UIViewController,但loadView或viewDidLoad方法被調用。UIViewController的loadView不叫
這是我在應用程序委託代碼:
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];
當我啓動應用程序,我看到一個導航欄,但沒有調用的loadView。我錯過了什麼? 我還以爲你叫view
編輯
MyViewController *viewController = [[MyViewController alloc] init];
[viewController view]; // doesn't look right?
UINavgationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[window addSubview:[navController view];
[window makeKeyAndVisible];
對約拿的評論編輯後的loadView被調用,但仍的loadView不會被調用。
關於你的第二條評論,分配視圖,你的意思是我的第二和第三行代碼,對吧?這就說得通了。但是,在這種情況下,我將如何調用getter? –
''[viewController view]'調用視圖的getter,但不應該直接這樣做。您添加視圖控制器的'UINavigationController'將在某個時刻調用該getter,以便將控制器的視圖添加到視圖層次結構中。你能分享你的視圖控制器實現嗎?這聽起來像你還有其他事情正在發生。 – Jonah
它基本上是Xcode中的空UIViewController模板,但除init之外,沒有(視圖)方法被調用。在那裏我試圖建立一個這樣的視圖: - (id)init {self}(self = [super init]){ \t UIView * view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds] ]。 \t self.view = view; \t [查看新聞]; \t} return self; } –