UITabBar UITableView中的MoreViewController图像在以编程方式选择后消失

use*_*342 7 iphone image uinavigationcontroller uitabbar ios

我正在尝试在UITabBar.viewControllers数组中选择一个UINavigationControllers.

我之前尝试过设置UITabbarController.selectedIndex,但Apple文档说: "要选择更多导航控制器本身,您必须改为改变selectedViewController属性的值."

AppDelegate *appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
UINavigationController *navController = [appDelegate.objTabBarController.viewControllers objectAtIndex:5];
[appDelegate.objTabBarController setSelectedViewController:navController];
Run Code Online (Sandbox Code Playgroud)

这样做很好但是当我改回到MoreViewController的列表视图时,左侧的图标消失了,不会再回来.

一切都好,用手指选择它.

选择很好

以编程方式选择时出现错误 - >图像消失了

每个代码第1步 每个代码第2步 每个代码第3步

我有什么错误吗?

最好的问候,史蒂夫

Wil*_*sch 0

我遇到了同样的问题。导航控制器似乎以某种方式失去了对视图控制器的跟踪。就我而言,图像消失的导航控制器位于 tabBarController 中的索引 7 处。导航控制器应该包含一个 SettingsViewController 类的 viewController。但有时它会失去它。

为了解决这个问题,我必须向两个类添加代码——应用程序委托和 SettingsViewController。在应用程序委托中:

-(void) fixSettingsNavigationController {
    UITabBarController* tab = self.tabBarController;
    NSArray* vcs = tab.viewControllers;
    NSInteger nVCs = vcs.count;
    if (nVCs > 7) {
        UIViewController* settingsContainer = vcs[7];
        UINavigationController* settingsContainerNav = (UINavigationController*)settingsContainer;
        if ([settingsContainerNav isKindOfClass: [UINavigationController class]]) {
            NSArray* settingsNavVCs = settingsContainerNav.viewControllers;
            NSInteger count = settingsNavVCs.count;
            SettingsViewController* svc = self.settingsViewController;
            if (!count) {
                  //  The container navigation controller has lost track of the settings view controller.
                  settingsContainerNav.viewControllers = [NSArray arrayWithObject:svc];
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在 SettingsViewController 中:

-(void) viewWillDisappear:(BOOL)animated {
    MyAppDelegate* appDel = [[UIApplication sharedApplication] delegate];
    [appDel fixSettingsNavigationController];
    [super viewWillDisappear: animated];
}
Run Code Online (Sandbox Code Playgroud)