0

我花了一个小时研究这个问题,尽管搜索了 SO,但还是无法弄清楚。基本上,我有一个 TabBarController (TBC),其中有几个选项卡,每个选项卡都有一个关联的 UIViewController。在我的应用程序中,我还有其他 UIViewControllers,它们根本不属于 TBC。我在这些非 TBC UIViewController 之一上有一个按钮,单击该按钮时,不仅应该导航到 TBC,而且还应该导航到不为 0 的特定选项卡索引。

我发现很多人说,“哦,只是参考 self.tabBarController...blah blah blah”,但是当我在我的一个非 TBC UIViewControllers 中时,self 对我不起作用。

我确实找到了以下我认为可能有效但没有成功的方法。代码获取我需要的 TBC 的引用,分配一个非零索引以预期其显示,然后执行 segue。不幸的是,我继续只看到 segue 之后的第一个选项卡。

// doesn't work...    
UITabBarController *TBC = [self.storyboard instantiateViewControllerWithIdentifier:@"TBC"];
TBC.selectedIndex = 1;
[self performSegueWithIdentifier:@"goTBC" sender:nil];

任何帮助,将不胜感激!

4

1 回答 1

0

我最终通过在我的 AppDelegate 中创建一个 int 变量来跟踪应该显示的默认值为 0 的选项卡索引来解决这个问题。然后,在我的 TabBarController 的 viewWillAppear 方法中,我将 selectedIndex 设置为我存储在 AppDelegate 中的选项卡索引。这可以解决问题,尽管我认为它可能不是最干净的。

- (void)viewWillAppear:(BOOL)animated
{
     // Assume ad is your app delegate...
     // Assume navToIndex is the int I referenced above in app delegate
     self.selectedIndex = ad.navToIndex;
}
于 2013-02-20T00:56:26.580 回答