从导航控制器弹出时如何保持在同一个选项卡中

Posted

技术标签:

【中文标题】从导航控制器弹出时如何保持在同一个选项卡中【英文标题】:How to stay in the same tab when poping off from Navigation Controller 【发布时间】:2013-01-04 07:47:23 【问题描述】:

我的意图是创建一个应用程序,该应用程序具有可单击的 UIButton 的主视图。单击其中一个按钮将进入 TabBarController 视图。

例如,当您单击 sample1 按钮时,将自动选择 TabBarController 视图中的第二个选项卡。当您单击 sample2 按钮将转到第三个选项卡时,更多按钮将转到更多选项卡,该选项卡将显示表格视图。

我的问题是当我单击 MoreViewController 中的 UITableViewCell 进入详细视图时。但是,当我想通过单击左上角按钮返回 TabBarController 时。该选项卡将更改为我在主视图中单击的选项卡。

TabBarController 的 selectedIndex 似乎没有改变,即使我在委托方法中设置了值

- (void)tableView:(UITableView *)tableView 
didSelectRowAtIndexPath:(NSIndexPath *)indexPath

MoreViewController中的viewWillAppearviewWillDisappear等其他地方,selectedIndex的值仍然保持不变。

示例代码在这里 -> http://uploadingit.com/file/qxfbw4cuzjdkk56v/9s.zip

有人知道如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

实际上,您正在使用主导航控制器从主视图推送您的标签栏控制器。因此,它会在弹出 POP 时将您带到主视图。

试试这个来创建标签栏

tabBar_Controller = [[UITabBarController alloc] init];
NSMutableArray *localControllersArray =[[NSMutableArray alloc]initWithCapacity:2];


firstViewController = [[FirstViewController alloc] initWithNibName:@"firstViewController" bundle:nil];
nav = [[UINavigationController alloc] initWithRootViewController:firstViewController];
nav.tabBarItem.title = @"item1";
nav.navigationBar.barStyle = UIBarStyleBlack;
[localControllersArray addObject:nav];
[self setNav:nil];

secondViewController = [[SecondViewController alloc] initWithNibName:@"secondViewController" bundle:nil];
nav = [[UINavigationController alloc]initWithRootViewController:secondViewController];
nav.tabBarItem.title = @"item2";
[localControllersArray addObject:nav];
[self setNav:nil];

tabBar_Controller.viewControllers = localControllersArray;
tabBar_Controller.delegate = self;
tabBar_Controller.selectedIndex = 0;
[self.window addSubview:tabBar_Controller.view];

【讨论】:

以上是关于从导航控制器弹出时如何保持在同一个选项卡中的主要内容,如果未能解决你的问题,请参考以下文章

如何从导航堆栈中推送/弹出uiviewcontroller时收到警报

从导航堆栈推送/弹出uiviewcontroller时如何收到警报

导航栏隐藏在 iPhone sdk 的弹出视图控制器上

在目标视图控制器 viewWillAppear 中检测向后/弹出导航 [重复]

推入导航堆栈时隐藏 TabBar 并在弹出导航堆栈时将其返回

在 iOS 11 上,导航项中的搜索栏在导航弹出时折叠并卡在状态栏下