修改从UITabBarController的“更多”选项卡显示的选项卡的导航栏上的“更多”按钮

时间:2013-09-08 21:42:33

标签: ios uinavigationcontroller uitabbarcontroller uibarbuttonitem

我的应用程序包含 UITabBarController ,其中有超过五个标签。

enter image description here

当我按更多标签时,我会转到 moreNavigationController ,这是 UINavigationController

enter image description here

正如您所看到的,我已经找到了如何设置标题色调表格颜色以及编辑的样式更多屏幕上的按钮,以及编辑按钮的配置屏幕。

当我选择表格中的项目时,我无法弄清楚如何设置标题为更多的后退按钮的样式。

enter image description here

每个选项卡都有它自己的类,的 GRWTabSettingsViewController 作为示例,其从继承的 GRWViewController 下,它为所有的标签,然后从的UIViewController <继承提供公用功能/强>

设置屏幕(或任何其他标签)上,我正在尝试修改更多后退按钮。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [(UIBarButtonItem *)[(UINavigationItem *)[(UINavigationBar *)[(UINavigationController *)[self navigationController] navigationBar] topItem] leftBarButtonItem] setTintColor:[UIColor darkGrayColor]]; 
    [self.navigationController.navigationBar.topItem.leftBarButtonItem setTintColor:[UIColor darkGrayColor]];
}

但是, navigationController 显然是,因为这些更改已应用于更多屏幕,而不是设置 strong>屏幕。

我误解了什么?如何修改我正在查看的屏幕导航栏上显示的按钮?

=== SOLUTION ===

enter image description here

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // use backBarButtonItem not leftBarButtonItem
    //[(UIBarButtonItem *)[(UINavigationItem *)[(UINavigationBar *)[(UINavigationController *)[self navigationController] navigationBar] topItem] leftBarButtonItem] setTintColor:[UIColor darkGrayColor]];
    //[self.navigationController.navigationBar.topItem.leftBarButtonItem setTintColor:[UIColor darkGrayColor]];

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
                                   initWithTitle:self.navigationController.navigationBar.topItem.title
                                   style:UIBarButtonItemStylePlain
                                   target:nil
                                   action:nil];
    [backButton setTintColor:[UIColor darkGrayColor]];

    self.navigationController.navigationBar.topItem.backBarButtonItem = backButton;
    // these do not work
    //[self.navigationController.navigationBar.topItem.backBarButtonItem setTintColor:[UIColor darkGrayColor]];
    //[backButton setTintColor:[UIColor darkGrayColor]];
}

我花了一段时间才发现我无法通过自我格式化按钮,或者在分配到自我后格式化按钮。

1 个答案:

答案 0 :(得分:1)

您应该自定义上一个导航项的backBarButtonItem,而不是topItem