2012-05-04 33 views
2

我选择项目模板为“单视图”。我试图推按钮上的详细视图(UIViewController)click.Button操作正确触发并执行代码[自navigatingController]推......我的代码:推视图不会从单个视图的应用程序推UIViewController

MapDetailViewController *mapDetailViewController = [[MapDetailViewController alloc] init]; 
    [self.navigationController pushViewController:mapDetailViewController animated:YES]; 
    NSLog(@"self.navigation is as %@",self.navigationController); 

self.navigationController是null.So我试图ALLOC INIT型导航控制器的局部变量,并且还变量能够是无-null(十六进制值),仍然无法推送mapDetailView。
什么,我的想法是,我已经选择了错误的模板(基于视图)。应该我选择了基于导航的(主从)。好了下面自动生成的代码应用程序委托的:

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
// Override point for customization after application launch. 
self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 
self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 
return YES; 

应该对导航控制器进行一些更改吗?
有何建议?

回答

5

你的问题是,你甚至没有一个导航控制器来推动。你的代码改成这样:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autorelease]; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 
    self.window.rootViewController = nav; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+1

很好的回答,但应该指出的是,这个代码属于创建初始视图控制器里,通常在应用程序的委托。 – Caleb

+0

@马克伟大它解决了我的问题,但现在在我的rootviewController导航栏显示(显然)。我能够使用isHidden:YES,使其隐藏。是没有任何其他方式,以便我能够推动我的详细视图控制器没有使导航控制器为rootViewController。 – Alok

+0

Caleb:固定。 Maddy:通常在弹出和推送视图时使用导航栏。我不确定推送/弹出没有,但是您应该记住,通过使用一个,您将自动为用户生成一个后退按钮,这是一种在整个iOS中流行的设计模式。 –