0

我有一个带有超过五个选项卡的UITabBarController的应用程序。

在此处输入图像描述

当我按下More选项卡时,我转到了UINavigationController的moreNavigationController

在此处输入图像描述

如您所见,我已经弄清楚了如何在更多屏幕上设置TitleTintTable colorEdit按钮的样式,以及通过按下Edit按钮来设置 Configure屏幕的样式。

当我在表格中选择一个项目时,我无法弄清楚如何设置名为More的后退按钮的样式。

在此处输入图像描述

每个选项卡都有自己的类,例如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显然是父级,因为这些更改会应用到更多屏幕而不是设置屏幕。

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

=== 解决方案 ===

在此处输入图像描述

- (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]];
}

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

4

1 回答 1

1

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

于 2013-09-14T21:05:07.067 回答