我有一个带有超过五个选项卡的UITabBarController的应用程序。
当我按下More选项卡时,我转到了UINavigationController的moreNavigationController。
如您所见,我已经弄清楚了如何在更多屏幕上设置Title、Tint、Table color和Edit按钮的样式,以及通过按下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后格式化按钮。