如何从 UIButton 到选项卡栏项?

Posted

技术标签:

【中文标题】如何从 UIButton 到选项卡栏项?【英文标题】:How to segue from UIButton to a Tab Bar Item? 【发布时间】:2012-07-30 17:35:59 【问题描述】:

我有一个带有标签栏的应用,其中包含 5 个标签。我决定使用“主屏幕”而不是直接在第一个选项卡中打开应用程序。我的主屏幕将包含一条欢迎消息和 5 个按钮,可直接转到所需的选项卡。示例:第 4 个按钮将转到第 4 个选项卡。单击一个按钮后,不应再看到主屏幕。导航模式将通过标签栏。

My Home View Controller 5 个按钮和对 Tab Bar Controller 的引用,以传递单击的按钮。选项卡栏控制器 (@interface TabBar : UITabBarController <UITabBarControllerDelegate>) 控制 5 个选项卡开始的屏幕。由于某些原因,我无法让[self.tabBarController setSelectedIndex:3]; 工作。我把它放在- (void)viewDidLoad,但它什么也没做。

有人知道为什么不调用 setSelectedItem 吗?

编辑:看看那个问题:

self.tabBarController.selectedIndex = 1;

NSLog(@"%i", self.tabBarController.selectedIndex);

在运行时,我得到 0 作为 NSLog 的结果...为什么 setter 不工作?

【问题讨论】:

请通过-viewDidLoad: 方法发布您的代码。 那里没有什么令人印象深刻的东西,事实上这是我知道的唯一方法。 - (void)viewDidLoad [超级 viewDidLoad]; NSLog(@"didLoad"); [self.tabBarController setSelectedIndex:3]; 标签栏控制器是否与情节提要中的视图控制器正确链接? 嗯,我没有从我的控制器到界面的 IBOutlet,因为 TabBarController 默认已经有一个标签栏。但是,当我尝试将我的班级连接到现有的标签栏时,我在运行时遇到了崩溃。例如,我尝试将 Tab Bar 的委托设置为类本身,但应用程序崩溃了。 应该是这样的吗? 【参考方案1】:

您可以自定义选项卡栏控制器的转场并命名转场(例如,使用“yourSegueName”)。

不仅仅是在所需的标签页调用 UITabBarController 和 setSelectedIndex:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
if ([[segue identifier] isEqualToString:@"yourSegueName"])
    UITabBarController *destController = [segue destinationViewController];
    [destController setSelectedIndex:3];

【讨论】:

以上是关于如何从 UIButton 到选项卡栏项?的主要内容,如果未能解决你的问题,请参考以下文章

添加选项卡栏项 (UITabBar) 时 XCode 4.3 崩溃

有条件地在选项卡栏项后面选择viewcontroller

选项卡栏项显示具有模态序列的视图控制器

将选项卡栏项与在其堆栈中显示第二个视图控制器的导航控制器相关联?

UITabBarItem选项卡栏项目单个选定的背景颜色

导航回父视图控制器时,UIButton 在选项卡栏后面 - iOS