IOS / Objective-C:以编程方式更改标准UITabBar项目的标题文本

时间:2018-03-26 19:04:51

标签: ios uitabbarcontroller

当用户从UITabBarController中嵌入的起始VC中切换到第二个VC时,我会使用UITabbarItem方法中的一些代码更改viewWillAppear的标题第二个视图控制器。

//第二个VC,View WIll出现

UITabBarItem *selectedItem = self.tabBarController.tabBar.selectedItem;
    if (selectedItem) {
        selectedItem.title = @"VoiceMail";
    }

这很好用。

当用户返回起始视图控制器时,我想重新切换标题。

我尝试通过在视图中放置类似的代码来执行此操作,将出现启动视图控制器的方法。

启动VC:ViewWIllAppear

UITabBarItem *selectedItem = self.tabBarController.tabBar.selectedItem;
    if (selectedItem) {
        selectedItem.title = @"Phone";
    }

但它没有效果,标题为Voicemail

WOuld感谢任何关于如何改回初始价值的建议。

感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

尝试通过引用“正在启动VC”中的.selectedItem来更改“第二个”标签标题将无效,因为此时.selectedItem StartingVC

一种方法是保存对SecondVC索引的引用...然后,在 VC,在viewWillDisappear上,您可以重置其标签的标题:< / p>

全部在SecondVC

#import "ChangeSecondViewController.h"

@interface ChangeSecondViewController ()

@property (assign, readwrite) NSInteger myTabIndex;

@end

@implementation ChangeSecondViewController

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    UITabBarItem *selectedItem = self.tabBarController.tabBar.selectedItem;
    if (selectedItem) {
        selectedItem.title = @"VoiceMail";
    }
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    _myTabIndex = self.tabBarController.selectedIndex;
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    UITabBarItem *myTabItem = [[self.tabBarController.tabBar items] objectAtIndex:_myTabIndex];
    if (myTabItem) {
        myTabItem.title = @"Phone";
    }
}

@end