gpt4 book ai didi

ios - 从旁边点击 TabBarButtonNavController REFrostedViewController

转载 作者:搜寻专家 更新时间:2023-10-30 20:24:16 24 4
gpt4 key购买 nike

我想知道是否可以通过编程方式从 Controller1 单击 Controller2 上的 ButtonA/TabBarButton。

我的 Controller1 充当 sideNav,所以我实际做的是当我单击某个链接时,首先,我关闭 sideNav,其次,尝试单击第二个选项卡项。但这似乎不起作用。

这是我尝试单击选项卡的示例代码。

编辑:这是我的

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath isEqual:[tableView indexPathForCell:self.cellToClick]])
{
//closes sideNav
[self hideMenuViewController];

//Doesn't go to tab2
FirstController *controller1 = [FirstController new];
controller1.tabBarController.selectedViewController = [controller1.tabBarController.viewControllers objectAtIndex:1];
}
}

为了清楚起见,我的 sideNav 中有两个按钮,它们需要充当我的 tabBarController 的两个 tabBarButton。

例如,我单击了 sideNav 的第一个按钮,它将关闭 sideNav,然后单击我的 tabBarController 的第一个选项卡,依此类推。

知道这里发生了什么吗?

编辑:尝试这样做:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if ([indexPath isEqual:[tableView indexPathForCell:self.cellToClick]])
{
//closes sideNav
[self hideMenuViewController];

//Doesn't go to tab2


FirstController *controller1 = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstController"];
controller1.tabBarController.selectedViewController = [controller1.tabBarController.viewControllers objectAtIndex:1];
}
}

回答

if ([indexPath isEqual:[tableView indexPathForCell:self.homeCell]])
{
[self.frostedViewController hideSideNavController];

TabBarViewController *hmtvc = [((UINavigationController*)self.frostedViewController.contentViewController).viewControllers objectAtIndex:0];
hmtvc.selectedViewController = [hmtvc.viewControllers objectAtIndex:0];

}

我已经有一个 NavigationController 实例 THAT 嵌入到我的 TabBarController 中。真正的问题是我一开始以为我还没有实例。但我有。我正在使用名为 REFrostedViewController 的第三方。它包含 NavigationController 的实例。

frostedViewController.contentViewController 将 NavigationController 嵌入到 TabBarController 中,现在我只需要使用 NavController 访问 TabBarController。

我用的是:

[((UINavigationController*)self.frostedViewController.contentViewController).viewControllers objectAtIndex:0];

然后现在我可以访问我的 tabBarController 实例,我只是选择了我想要的选项卡,在我的例子中是第二个选项卡,所以我使用了。

hmtvc.selectedViewController = [hmtvc.viewControllers objectAtIndex:0];

最佳答案

您认为您的 firstViewController 已经创建,因此只有您可以移动选项卡和您可以执行的所有操作。

现在在 tableView 上确实选择了索引路径中的行,你又在创建一个新的 ViewController 对象,这不好。

已经存在的东西,你创建了一个新对象。

那是不合适的。

如果你明白这么多,我可以向你解释更多。

您需要在您的应用生命周期中找到 tabBarController 的引用。

这就是 tabBarControlelr 与 self.frostedViewController 关联的方式,然后您可以选择索引 os=f 的 tabBarController。

关于ios - 从旁边点击 TabBarButtonNavController REFrostedViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40501381/

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