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

IOS/Objective-C:以编程方式更改标准UITabBar项目的标题文本,ios,uitabbarcontroller,Ios,Uitabbarcontroller,当用户从嵌入UITabBarController的起始VC中切换到第二个VC时,我会更改UITabbarItem的标题,并在第二个视图控制器的ViewWillAspect方法中添加一些代码 //第二个VC,视图将出现 UITabBarItem *selectedItem = self.tabBarController.tabBar.selectedItem; if (selectedItem) { selectedItem.title = @"VoiceMail";

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

//第二个VC,视图将出现

UITabBarItem *selectedItem = self.tabBarController.tabBar.selectedItem;
    if (selectedItem) {
        selectedItem.title = @"VoiceMail";
    }
这个很好用

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

我试图通过在启动视图控制器的视图将出现方法中放置类似的代码来实现这一点

启动VC:viewwill将显示

UITabBarItem *selectedItem = self.tabBarController.tabBar.selectedItem;
    if (selectedItem) {
        selectedItem.title = @"Phone";
    }
但它没有效果,只留下语音信箱的标题

如果您对如何恢复初始值有任何建议,我们将不胜感激


谢谢您的建议。

尝试通过引用更改第二个选项卡标题。在开始的VC中选择EdItem将不起作用,因为此时。选择EdItem正在开始VC

一种方法是保存对SecondVC索引的引用。。。然后,在该VC中,在ViewWillEnglish上,您可以重置其选项卡的标题:

这一切都在第二个VC中:

当你跳回第一个VC时,你确定selectedItem仍然存在吗?
#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