【发布时间】:2013-09-08 21:42:32
【问题描述】:
我有一个带有 UITabBarController 的应用,它有五个以上的标签。
当我按下 More 选项卡时,我会转到 moreNavigationController,它是一个 UINavigationController。
如您所见,我已经弄清楚了如何设置 Title、Tint、Table color 和 Edit 的样式更多屏幕上的按钮,以及按编辑按钮的配置屏幕。
当我在表格中选择一个项目时,我无法弄清楚如何设置名为 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 显然是 parent,因为这些更改会应用到 More 屏幕而不是 Settings strong> 屏幕。
我有什么误解,如何修改我正在查看的屏幕导航栏上显示的按钮?
=== 解决方案 ===
- (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 后格式化按钮。
【问题讨论】:
-
没有人对此有任何想法或评论吗?!
标签: ios uinavigationcontroller uitabbarcontroller uibarbuttonitem