2011-07-26 165 views
0

我有一个视图控制器,我想在其中实现一个导航控制器,但是当我通过Interface Builder或以编程方式实现它时,它不起作用。在视图控制器中实现导航控制器

其中大部分是我通过Interface Builder实现的,但这里是我在AppDelegate中实现的代码,以及我试图在视图控制器中实现的代码。

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
[window addSubview:navController.view]; 

我知道我不能在一个视图控制器实行“窗口”,所以我想这在我的视图控制器:

[self.view addSubview:navController]; 

但它仍然无法正常工作。

+0

你需要做的是这样的[self.window addSubview:navController.view]和initWithRootViewController之前,你需要分配你的viewController对象 – booleanBoy

+0

Chk我的答案。并以同样的方式执行 – booleanBoy

回答

2

在应用程序委托的applicationDidFinishLaunching中,您必须添加此代码。

viewController=[[myViewController alloc]init]; 
navigationController=[[UINavigationController alloc]initWithRootViewController:viewController]; 
[self.window addSubview:navigationController.view]; 

其中的viewController是myViewController类的对象,其ü需要添加导航控制器。它在appDelegate的头文件中声明。类似的,navigationController也在tat中声明。希望这可以帮助。

新代码:

AppSettings *settings = [[AppSettings alloc] init]; 
UINavigationController *navCont = [[UINavigationController alloc] initWithRootViewController:settings]; 
navCont.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
[self.navigationController presentModalViewController:navCont animated:YES]; 
[settings release]; 
[navCont release]; 
+0

我已经尝试在applicationDidFinishLaunching下的appDelegate中实现此操作,但我想通过自己的viewController实现它。 – Souljacker

+0

然后尝试用self替换viewcontroller,并将此代码添加到您想要实现的viewcontroller的loadview方法中.... – booleanBoy

+0

像这样: - (void)loadView {[NewAlarm alloc] init] ; navController = [[UINavigationController alloc] initWithRootViewController:self]; [viewController addSubview:navController]; } – Souljacker

0

试试这个在您的-applicationDidFinishLaunching:

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
[self.window setRootViewController:navigationController]; 
[self.window makeKeyAndVisible];