如何通过编程方式添加导航控制器?

3
在我的应用程序中有一个需求..我在一个nib中有6个按钮,当我按下任何一个按钮时,根据按下的按钮会加载一个新的nib到窗口中。问题是,在加载新的nib之后,如果我想回到先前的nib(其中包含所有按钮),如何添加导航控制器?
现在我正在做的是,在加载新的nib时,当我按下按钮时
objNewViewController = [[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil];
[self.navigationController pushViewController:objNewViewController animated:YES];

但是我这样做无法加载nib文件,它没有执行任何操作?
2个回答

6
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[[NewViewController alloc] initWithNibName:@"NewViewController" bundle:nil]];

[self presentModalViewController:navigationController               animated:YES];
            [navigationController release];

在NewViewController中: 使用这个方法来关闭当前视图并返回上一个视图。
[[self navigationController] dismissModalViewControllerAnimated:YES];

当我这样做时,它正在加载我的新视图控制器的nib文件,但问题是它没有任何返回按钮可以返回。如何解决这个问题? - CKT
你可以将leftBarButton添加到导航项中。添加取消按钮并在其操作方法中关闭模态视图。 - Manjunath
presentModalViewController从iOS 6.0开始已被弃用。有什么替代方案吗? - Mayank

0

Xcode中有一个基于导航的应用程序模板,它可以实现您所描述的所有功能。至少非常接近,只是在-tableView:didSelectRowAtIndexPath:中的AnotherViewController被注释掉了。


谢谢您的回复,Johan。 但问题是拥有这5到6个按钮的nib不是第一个nib。 在此之前,我有两个nib。之后会出现这些按钮的nib。 在这里,我不能特别使用导航控制器,对吧? 这就是为什么我想通过编程方式添加导航控制器,至少可以返回包含按钮的nib。 - CKT
在这种情况下,使用其指定的初始化程序(-init...)创建UINavigationController,并在需要时添加其视图。您可以在使用-initWithNib...创建它们后将其他视图控制器推入其堆栈中。 - Johan Kool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接