在我的应用程序的详细视图中,导航控制器的后退按钮似乎从一些不道德的表现中获取其颜色的提示。通过一条通向细节视图的路径,它是蓝色的;通过另一个,它是黑色的。在任何一种情况下,后退按钮似乎都不存在于self.navigationController对象中。
所以这是一个详细视图:
此处是导航控制器的快照:
我很确定我知道如何更改此特定元素的颜色,但我不知道在哪里可以找到它。想法?
VenueTableViewController.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *show;
if( [self.listType isEqualToString:@"showsByRegion"] )
{
NSString *venueIndex = [[self.allShows allKeys] objectAtIndex:[indexPath indexAtPosition:0]];
int index = [indexPath indexAtPosition:1];
show = [[self.allShows objectForKey:venueIndex] objectAtIndex:index];
} else {
int index = [indexPath indexAtPosition:(indexPath.length - 1)];
show = [self.showsAtVenue objectAtIndex:index];
}
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone"
bundle:[NSBundle mainBundle]];
detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"InfoViewController"];
detailViewController.showInfo = show;
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
}
InfoViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView = [[self.view subviews] objectAtIndex:1];
[self createInfoViewDictionary];
[self addTopImage];
[self setFrameForTableView];
[self bindLabelsToProperties];
[self.navigationController.navigationBar setTitleTextAttributes:[SHColors sharedInstance].navBarText];
}
答案 0 :(得分:3)
导航栏上的后退按钮属于后退按钮发送给您的视图控制器。 即。
A --->B --->C
C
的后退按钮属于B
导航项,B
的后退按钮属于A
导航项。
这意味着您需要检查在上一个View Controller中执行的操作。
答案 1 :(得分:3)
如果你得到不同的颜色是因为你从不同的viewcontrollers到达那里并且那些viewcontrollers有不同的tintColor。
然后,您需要使用以下颜色设置颜色:
- (void)viewDidLoad
{
....
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
....
}
如果你想在所有导航栏中使用相同的颜色,你可以使用UIAppearance代理在AppDelegate中设置它们(编辑:正如Jordan Montel所说)
答案 2 :(得分:2)
如果您想更改整个标题颜色,可以在AppDelegate的方法tintColor
中设置导航栏的didFinishLaunchingWithOptions
:
[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];
didFinishLaunchingWithOptions
方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
[[UINavigationBar appearance] setTintColor:[UIColor blackColor]];
return YES;
}
答案 3 :(得分:1)
将导航控制器导航栏的tintColor
设置为您想要后退按钮的颜色。
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
在iOS 6上,这会将整个栏设置为白色。
如果您设置导航栏的某些超级视图的色调颜色,那么如果未设置后退按钮将继承它。
答案 4 :(得分:0)
视图的tintColor
属性设置后退按钮的不同颜色,如果没有设置,则从超级视图继承。您可以在app delegate:
window.tintColor = [UIColor purpleColor];
根据您的情况,您需要回溯并查看每个导航路径中各个颜色的来源,并设置导航栏的tintColor
属性。
答案 5 :(得分:0)
像@micantox一样,后退按钮来自之前的视图控制器。因此,如果您想访问当前控制器可见的后退按钮,您必须访问呈现视图控制器,因此最好的方法是:
self.presentingViewController.navigationItem.backBarButtonItem