Я бы сказал, что это провал, если заявление if ([[ver objectAtIndex:0] intValue] >= 7)
. Я хотел бы заменить, что весь if statement
с:
if([[[UIDevice currentDevice] systemVersion] intValue] >= 7) {
// Do the below if you want to set the bar tint color for every UINavigationBar
// [[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
// [[UINavigationBar appearance] setTranslucent:NO];
[[[self navigationController] navigationBar] setBarTintColor:[UIColor redColor]];
[[[self navigationController] navigationBar] setTranslucent:NO];
} else {
// Do the below if you want to set the bar tint color for every UINavigationBar
// [[UINavigationBar appearance] setTintColor:[UIColor redColor]];
[[[self navigationController] navigationBar] setTintColor:[UIColor redColor]];
}
[[UIDevice currentDevice] systemVersion];
вернет NSString *
, что может быть что угодно, от 7
до 7.0.1
. Выполнение floatValue
будет возвращать по крайней мере 7.0
, как это добавит 0
в конце концов, если он просто возвращает 7
, поэтому мы хотим, чтобы всегда дать нам только начальную системную версию 7
так что нам нужно сделать intValue
на конце, так это выглядит, как [[[UIDevice currentDevice] systemVersion] intValue];
забыть о методе componentSeperatedByString:
не нужно вообще для этого, это вызовет больше проблем, чем вы хотите.
Вы также мог бы сделать этот вид if statement
if (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_7_0) {
// Everything above and including iOS 7.0
} else {
// Everything below iOS 7.0
}
где вы добавление делегата файл кода или ?? – Yohan
убедитесь, что ваш 'self.navigationController' не должен быть nil. –
И попробуйте 'if ([[[UIDevice currentDevice] systemVersion] floatValue]> = 7)' вместо этого использовать массив. –