- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想知道是否可以通过编程方式从 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/
我正在尝试调整侧边栏的大小,但更改仅在我唯一一次打开侧边栏后反射(reflect)出来。 @implementation MenuViewController - (void)viewDidLoad
我已经实现了 REFrostedViewController这真是太棒了。该菜单是使用正确的 View Controller 实现的(当点击正确的行时,它会转到适当的 View Controller
我想知道是否可以通过编程方式从 Controller1 单击 Controller2 上的 ButtonA/TabBarButton。 我的 Controller1 充当 sideNav,所以我实际做
我正在使用 REFrostedViewController 在我的项目中显示侧边栏菜单的库,其中有一个表格 View 来显示内容。 选择表格单元格后,我想显示一个新页面。我想使用 UINavigati
这个问题是关于一个非常受欢迎的 Github sidemenucontroller 项目,名为 RESideMenu . 我开始使用 REFrostedViewController 编写应用程序代码大
我是一名优秀的程序员,十分优秀!