我有一个UITabBarController
包含 4 个不同的UIViewControllers
.
在第一个选项卡上有一个UINavigationViewController
包含它的子项UIViewController
。在不点击标签栏的情况下,我想将用户带到第二个标签上。为此,我尝试了:
self.navigationController.tabBarController.selectedIndex = 1;
但它不起作用。
忽略任何错误我是新手。
谢谢你。
我有一个UITabBarController
包含 4 个不同的UIViewControllers
.
在第一个选项卡上有一个UINavigationViewController
包含它的子项UIViewController
。在不点击标签栏的情况下,我想将用户带到第二个标签上。为此,我尝试了:
self.navigationController.tabBarController.selectedIndex = 1;
但它不起作用。
忽略任何错误我是新手。
谢谢你。
如果设置委托试试这个:
self.selectedIndex = 1;
你是 tabBarController :)
在尝试更改选项卡之前执行以下操作:
UITabBarController *tab = self.tabBarController;
if (tab) {
NSLog(@"I have a tab bar");
[self.tabBarController setSelectedIndex: 1];
}
else {
NSLog(@"I don't have one");
}
为了调用tabbarcontroller.selectedindex
你必须从导航控制器中找出 tabbarcontroller 如果你不使用 navigationController 上的 push 只需使用 navigationController 的 topViewController 属性来获取你的 tabBarController 的实例并将它分配给 UITabBarController 和我们 selectedIndex 这将工作正常
尝试将您的选项卡切换代码移动到viewDidLoad
我验证这适用于 xcode 4 中内置的选项卡式应用程序模板项目
- (void)viewDidLoad
{
[super viewDidLoad];
self.tabBarController.selectedIndex = 1;
}
我还会看一下您的 AppDelegate 类,以了解与此类似的内容
self.tabBarController = [[[UITabBarController alloc] init] autorelease];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, nil];
self.window.rootViewController = self.tabBarController;
如果您在任何地方都看不到这些行,那么您需要在代码中的其他位置找到 UITabBarViewController 正在初始化的位置,并改用该对象指针。
试试看嘛
self.tabBarController.selectedIndex = 1
我们应该把下面的部分放在 viewDidAppear 中。
- (void)viewDidAppear:(BOOL)animated
{
NSArray *ary = [self.tabBarController viewControllers];
UIViewController *vc = ary[3];
[self.tabBarController setSelectedIndex:3];
[self.tabBarController setSelectedViewController:vc];
}
如果您正在呈现一个新控制器(不同于当前屏幕上的控制器),您应该在函数的完成块中设置索引以呈现您的视图控制器。如果您在呈现之前设置它,它可能无法正常工作。
就我而言,我已将选项卡控制器嵌入到导航控制器中。我展示了新的导航控制器newNavContoller
,一旦它出现,我在我的标签控制器中设置索引tvc
:
currentViewController?.presentViewController(newNavController, animated: true, completion: {tvc.selectedIndex = selectedIndex})