Ios 从选项卡栏按钮将视图控制器推到导航控制器上

Ios 从选项卡栏按钮将视图控制器推到导航控制器上,ios,objective-c,uinavigationcontroller,uitabbarcontroller,Ios,Objective C,Uinavigationcontroller,Uitabbarcontroller,我有一个选项卡栏控制器,带有如下按钮: - (void) addButtonPressed:(UIButton *) sender { [sender setBackgroundColor:[UIColor regularColor]]; PostViewController *post = [[PostViewController alloc] init]; [self.navigationController pushViewController:post

我有一个选项卡栏控制器,带有如下按钮:

- (void) addButtonPressed:(UIButton *) sender
{    
    [sender setBackgroundColor:[UIColor regularColor]];

    PostViewController *post = [[PostViewController alloc] init];

    [self.navigationController pushViewController:post animated:YES];
}
此代码运行,但从不显示PostViewController,并且选项卡栏控制器保持不变

如何推送至新控制器

已创建NavigationController,并将StartViewController添加为rootController

在StartViewController中,我有:

TabBarController *tab = [[TabBarController alloc] init];

    // Presentation
[self presentViewController:tab animated:NO completion:nil];

在选项卡栏中,您需要创建单独的导航控制器

假设有3个选项卡A、B和C。所有这三个选项卡都具有从一个视图导航到另一个视图的功能。然后,您需要创建指向选项卡A、B和C的三个单独的导航控制器eact。通过这种方式,您可以导航到特定选项卡中的任何类

请查看此以了解更多详细信息


希望这对你有帮助。快乐编码:

您可能需要将选项卡栏控制器嵌入导航控制器中,在情节提要中,单击tabbarController,使其以所有蓝线高亮显示,然后转到Xcode中的编辑器,选择嵌入>UINavigationController。如果要以编程方式执行此操作,请在设置窗口的AppDelegate中使用以下命令:

UINavigationController*  navigationController = [[UINavigationController alloc] initWithRootViewController:tabBarController];
navigationController.toolbarHidden=YES;
navigationController.navigationBarHidden=YES;
self.window.rootViewController =navigationController; 

如果您使用的是.xib,则必须使用NSBundle来加载nib


如果您使用的是故事板,那么您需要使用prepareForSegue传递数据或仅显示数据

能否向我展示您的选项卡栏控制器代码您是如何创建的?您的选项卡栏控制器是否嵌入到导航控制器中?但如问题所示,选项卡栏控制器未嵌入到导航控制器中。如果您的viewController是然后只推它的子视图控制器获取根视图控制器的导航控制器,但在您的示例中,检查navigationController是否为nil。如何正确嵌入它?我被告知只创建一个导航控制器并使用initRootViewControlleries设置它。当我们有简单的基于导航的应用程序时,我们会执行此操作。这仅当tab bar是您的rootViewController时才有效