LTNavigationBarというライブラリを使用しています
先日Xcode9のベータ版にアップデータすると
LTNavigationBarのUINavigationBar+Awesome.mというクラスの下記のメソッドでエラーが発生してしまいました。
Objective
1- (void)lt_setElementsAlpha:(CGFloat)alpha 2{ 3 [[self valueForKey:@"_leftViews"] enumerateObjectsUsingBlock:^(UIView *view, NSUInteger i, BOOL *stop) { 4 view.alpha = alpha; 5 }]; 6 7 [[self valueForKey:@"_rightViews"] enumerateObjectsUsingBlock:^(UIView *view, NSUInteger i, BOOL *stop) { 8 view.alpha = alpha; 9 }]; 10 11 UIView *titleView = [self valueForKey:@"_titleView"];//この行でエラーが発生 12 titleView.alpha = alpha; 13// when viewController first load, the titleView maybe nil 14 [[self subviews] enumerateObjectsUsingBlock:^(UIView *obj, NSUInteger idx, BOOL *stop) { 15 if ([obj isKindOfClass:NSClassFromString(@"UINavigationItemView")]) { 16 obj.alpha = alpha; 17 } 18 if ([obj isKindOfClass:NSClassFromString(@"_UINavigationBarBackIndicatorView")]) { 19 obj.alpha = alpha; 20 } 21 }]; 22}
エラー文はこちらです
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key _titleView.'
UINavigationBarにはtitleViewというプロパティはないと言っています。
調べてみると、iOS11になってから、今までiOSSDKのUINavigationBar.hにあったtitleViewというプロパティがUINavigationItem.hに移されたのが原因のようです。
(以前のXcodeで確認すると、UINavigationBar.hにUINavigationItemのプロパティやメソッドも一緒に表記されていて、UINavigationItem.hというファイルはありませんでした。)
今までとは別の方法でtitleViewを呼び出そうと考えているのですが、
どのパターンでtitleViewのalpha値を変更しようとしても全く反映されず、なかなかうまくいきません。
どなたかご教授いただけないでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/26 05:51
2017/06/26 06:02
2017/06/26 06:19