ios - 以编程方式更改选项卡并将 Controller 推送到导航堆栈

标签 ios uitabbarcontroller

我有一个标签栏应用程序。其中一个选项卡具有导航堆栈。我想以编程方式更改选项卡,然后将新 Controller 推送到选定的选项卡堆栈。我可以很好地更改标签:

   KidScienceAppDelegate *appDelegate = (KidScienceAppDelegate*) [[UIApplication sharedApplication] delegate];
    UITabBarController *tab=[appDelegate tabBarController] ;
    tab.selectedIndex=2;

如果我只是运行它,它会正确地移动到带有导航堆栈的选项卡并显示 Root View 。然后我想将一个新 Controller 推送到该堆栈上。我试过这个:

ExperimentsNameViewController *detailViewController = [[ExperimentsNameViewController alloc] initWithNibName:@"ExperimentsNameView" bundle:nil];

FindViewController *c = [tab.viewControllers objectAtIndex:2];
[c.navigationController pushViewController:detailViewController animated:NO];

但这不会插入 Controller 。有人有什么想法吗?

最佳答案

如果您在索引 2 处有一个导航 Controller ,那么当您执行 [tab.viewControllers objectAtIndex:2]; 时,您将获得一个导航 Controller ,所以它应该是

[..]
UINavigationController * navigationController = [tab.viewControllers objectAtIndex:2];
[navigationController pushViewController:detailViewController animated:NO];

关于ios - 以编程方式更改选项卡并将 Controller 推送到导航堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6566487/

相关文章:

ios - 使用按钮执行 SCNAction (SwiftUI)

ios - 将大量 GPS 数据异步转换为城市/国家

ios - 将 TextEditor 文本计数连接到 SwiftUI 中的 ProgressView

ios - 删除两个或多个 '\r' '\n' 的出现

iphone - 将 UINavigationBar 的外观设置重置为默认值

ios - 如何在导航 Controller 中添加 tabbarcontroller

ios - 如何在 UITableViewController 中显示 UIActivityIndi​​catorView?

iphone:检查当前 View Controller 是否在 moreNavigationController 上

ios - 切换标签时如何将UITabbarItem的viewcontroller设置为默认viewcontroller?

ios - 个人 UITabBaritem 色调颜色