我正在尝试使用UINavigationController,但不确定如何。到目前为止(大约一年),我一直在使用presentModalViewController和dismissModalViewController来呈现/关闭视图控制器。
所以,这就是我所做的。我的主视图控制器(在启动时显示的第一个)称为MainViewController,它扩展了UIViewController。
所以我在我的应用程序委托中做了这个启动功能:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
MainViewController *controller = [[MainViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
在我的MainViewController的viewDidLoad方法中:
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"Title";
self.navigationController.navigationBar.tintColor = [Constants barColor];
....more code...
}
但是,在我的MainViewController中,我想展示另一个名为SecondViewController的视图控制器,它需要一个带有后退箭头按钮的UINavigationBar。那么,是否要让SecondViewController扩展UIViewController并通过在viewDidLoad方法中设置title和backButton来做同样的事情?而我该如何呈现呢?我应该怎么做才能做到这一点?
最佳答案
您需要设置一个根视图控制器,最简单的方法是从Apple模板开始。
这是魔术发生的地方:
UIViewController *controller = [[UIViewController alloc] initWithNibName:@"MyNib" bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
导航控制器会为您完成所有工作(后退按钮,标题,动画)-它会保持跟踪!
我的工作流程是这样的:
在viewDidLoad中设置MutableArray,向其中添加控制器,例如:
NSMutableArray *array = [[NSMutableArray alloc] init];
MyCustomViewController *customView = [[MyCustomViewController alloc] initWithNibName:@"nib" bundle:@"nil"];
customView.title = @"Second Level";
[array addObject:customView];
self.controllers = array;
然后在您的代表中:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSUInteger row = [indexPath row];
UIViewController *childControllerToBe = [controllers objectAtIndex:row];
[self.navigationController pushViewController:childControllerToBe animated:YES];
}
通过阅读像Beginning iPhone Development这样的新手入门书籍,您可以学到更多的知识。
另外,apple docs总是很好:)