gpt4 book ai didi

iphone - 单击选项卡栏时将 UINavigationController 重置为第一个 Controller

转载 作者:技术小花猫 更新时间:2023-10-29 11:18:26 25 4
gpt4 key购买 nike

我的应用程序有 3 个选项卡栏项,每个都映射到一个单独的 View Controller 。我的问题是第一个 Controller 是一个 UINavigation Controller ,它向下钻取大约 3 层深。我的导航没有任何问题,但是当我单击不同的选项卡栏项然后返回到第一个选项卡栏项(带有 UINav Controller 的选项卡栏项)时,我希望将其重置为导航序列中的第一个 Controller 。

我读到你必须做类似的事情:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
[[self navigationController] popViewControllerAnimated:NO];
}

但是我不确定我应该把这个方法放在哪里。谁是标签栏 Controller 的代表?它在 AppDelegate 中设置...应该放在那里吗?

谢谢。

最佳答案

当然,在您的 AppDelegate 中,当您创建 UITabBarController 时,您可以将选项卡栏 Controller 的委托(delegate)设置为自身(即 AppDelegate)。然后你可以将 tabBar:didSelectItem: 方法放在你的 AppDelegate 中,只要用户点击 UITabBarItem 就应该调用它。我会在您的 AppDelegate 中创建一个实例变量属性,并保留对用于导航 Controller 选项卡的 UITabBarItem 的引用(我们称它为 tabBarItemForNavControllerTab)。您还应该引用第一个选项卡中的导航 Controller ,以便您可以从 AppDelegate 控制它(我们称它为 navControllerInFirstTab)

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
if (item != self.tabBarItemForNavControllerTab) {
[self.navControllerInFirstTab popToRootViewControllerAnimated:NO];
}
}

您可以在 UINavigationController 上使用 popToRootViewControllerAnimated: 而不是逐个弹出堆栈。

关于iphone - 单击选项卡栏时将 UINavigationController 重置为第一个 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com