2011-08-02 4 views
2

У меня есть UIView (menuView в коде ниже) размером 320x218 внутри представления. Я хочу загрузить контроллер навигации в это представление. Im, используя следующий код для этого:UINavigationController, не отображающий контроллер Root View

MenuViewController *menuController = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil]; 

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:menuController]; 
navigationController.navigationBarHidden = YES; 

[menuView addSubview:navigationController.view]; 
[menuController release]; 
[navigationController release]; 

Когда я его выполню, корневой вид не отображается в этом представлении. Отображается только панель навигации, а остальная часть поля пуста.

Edit:

Я просто разместил NSLog() в обоих initWithNibName: и viewDidLoad: от MenuViewController. Один в initWithNibName: вызывается, но один в viewDidLoad: не: S

Update:

Я попытался оттолкнуть menuController к моему navigationController мышления, так как его не появляется, это может быть не на стек. Исключение:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported 
+0

ли MenuViewController.xib существует и имя правильно? –

+0

Да и да. Я просто поместил NSLog() в initWithNibName: и viewDidLoad: из MenuViewController. Один в initWithNibName: вызывается, но тот, который находится в viewDidLoad: не делает: S –

+0

После прочтения вашего комментария вы можете поместить строку menuController.view; после создания navigationController? Просто добавьте эту строку и дайте мне знать результат. –

ответ

3

Я нашел ответ здесь:

UIViewController -viewDidLoad not being called

мне пришлось добавить эти строки кода после -initWithRootViewController для того, чтобы загрузить вид мой взгляд, корень контроллера:

navigationController.navigationBarHidden = YES; 
[navigationController setView:menuController.view]; 
0

Вы не должны добавлять navigationViewController в качестве подзадачи в свой MenuViewController. Как навигационныйViewController уже имеет MenuViewController.

Просто отобразите навигационный контроллер.

+0

menuView не является объектом menuViewController своим объектом UIView –

8

вызова layoutsubviews Выполнять работу.

[super loadView]; 
[self.view addSubview:navigationController.view]; 
[navigationController.view layoutSubviews]; 
+1

Хорошая точка, я могу спать сейчас – jeswang

0
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
// Override point for customization after application launch. 

ViewController *viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 

navController = [[UINavigationController alloc]initWithRootViewController:viewController]; 

self.window.rootViewController = self.navController; 

Попробуйте этот код в AppDelegate метод

Смежные вопросы