Ios5 按下navigationController堆栈后未显示视图

Ios5 按下navigationController堆栈后未显示视图,ios5,uinavigationcontroller,viewcontroller,Ios5,Uinavigationcontroller,Viewcontroller,我试图使用导航控制器来推/弹出视图,但我不希望在顶部有按钮的栏;我自己在做导航界面 因此,我在AppDelegate中创建了一个navigationController: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[U

我试图使用导航控制器来推/弹出视图,但我不希望在顶部有按钮的栏;我自己在做导航界面

因此,我在AppDelegate中创建了一个navigationController:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[WSViewController alloc] initWithNibName:@"WSViewController" bundle:nil];
    self.window.rootViewController = self.viewController;

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

    [self.window makeKeyAndVisible];

    return YES;
}
然后在我的WSViewController中,我有一个iAction方法,可以在导航堆栈上推送另一个视图(我已经验证了它是否正确执行此操作;我在堆栈上看到它):

但是当我点击我的WSViewController中的info按钮时,我没有看到info视图显示出来(它显示得很好)

如果我使navigationController成为根控制器,那么当我点击info按钮时,我确实会看到wsInfoViewController,但是,我也会在顶部看到导航栏,这是我不想要的

所以。。。首先,我是否错误地认为我可以用这种方式使用导航控制器(即,将其用于堆栈目的,但根本不用于任何UI)

其次,如果我没有错,为什么我推到堆栈上的视图没有显示出来?我猜这是因为我没有将导航控制器正确地连接到窗口上,但我不确定如何做到这一点

谢谢


伊丽莎白

所以我想我对我的问题有了答案。也就是说,为了使用它,必须将导航控制器设置为AppDelegate窗口的根视图控制器,否则,窗口不知道它。My WSViewController仍然是导航控制器的根视图控制器。然后为了摆脱导航栏,你可以把它隐藏起来。 以下是更新的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.viewController = [[WSViewController alloc] initWithNibName:@"WSViewController" bundle:nil];
    // doesn't work!
    //self.window.rootViewController = self.viewController;

    self.navController = [[UINavigationController alloc] 
                      initWithRootViewController: self.viewController];
    // do this instead
    self.window.rootViewController = self.navController;
    [self.window makeKeyAndVisible];

    return YES;
}
要在视图中隐藏导航栏,请在要隐藏导航栏的每个视图中添加以下方法:

- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];
}

这是伟大的工作到目前为止

你将iOutlet与viewController连接?你的意思是当我点击按钮时是否调用了我的showInfo方法?是的,我把一个断点放在我把视图推到堆栈上的地方,视图肯定在堆栈上。我认为问题在于窗口不知道navigationController堆栈,但我不知道如何正确设置。不知道。我的意思是,您是否已将IBOutlet WSInfoViewController与FileOwner中的viewController连接?我不确定为什么需要IBOutlet。我自己在showInfo:method中创建WSInfoViewController,并在我的WSViewController的属性中的属性中隐藏一个引用。这基本上不是一回事吗?
- (void) viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:animated];
}

- (void) viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:animated];
}