【问题标题】:iOS: popping up a subview in a tabviewiOS:在标签视图中弹出子视图
【发布时间】:2026-02-17 13:05:01
【问题描述】:

iOS 新手问题——我对导航视图在标签视图中的工作方式感到非常困惑。

现在我有一个有 2 个视图的 tabview。在第二个选项卡中,我有一个按钮。单击按钮时,我希望显示一个包含一些信息的新窗口,并且新窗口顶部需要一个返回按钮,该按钮可以返回到第二个选项卡。

我遵循了一些教程并在 secondTab.xib 中添加了NavigationController,添加了这一行

@property (nonatomic, retain) IBOutlet UINavigationController *navController; 

secondTab.h,和

NewWindowController *newWindow = [[NewWindowController alloc] initWithNibName:@"NewWindowController" bundle: nil];
[self.navController pushViewController:newWindow animated:YES];
NSLog(@"clicked");

我的按钮实现-(IBAction) click: (id)sender

当我单击第二个选项卡中的按钮时,日志显示“已单击”,但我的视图没有改变。

我需要更改文件所有者/导航控制器插座/参考插座等的一些设置吗?

谢谢!

【问题讨论】:

    标签: ios uinavigationcontroller tabview


    【解决方案1】:

    您不想要 UINavigationController 的属性,您想像这样推送到当前导航控制器:

    NewWindowController *newWindow = [[NewWindowController alloc] initWithNibName:@"NewWindowController" bundle: nil];
    [self.navigationController pushViewController:newWindow animated:YES];
    NSLog(@"clicked");
    

    当 UIViewController 与 UINavigationController 相关联(即它是导航控制器层次结构的一部分)时,它的 navigationController 属性将被设置,因此您可以像我展示的那样访问它。

    【讨论】:

    • 仍然没有显示。我想可能是因为我一开始没有navigationController。我的 appDelegate 中的代码是:self.window.rootViewController = self.tabBarController;
    • 我在 rootViewController 中添加了一个 navigationView,现在它可以工作了 :)