MFMailComposeViewController Сбои из-за глобальных свойств внешнего вида на iOS6
Я получаю следующий сбой, когда я представляю:MFMailComposeViewController
2013-11-08 11:04:05.963 [7108:1603] *** Assertion failure in NSDictionary *_UIRecordArgumentOfInvocationAtIndex(NSInvocation *, NSUInteger, BOOL)(), /SourceCache/UIKit/UIKit-2380.17/UIAppearance.m:1118
2013-11-08 11:04:06.032 [7108:1603] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Unknown key, "NSColor" in title text attributes dictionary'
мы отследили его до следующей настройки внешнего вида в моем AppDelegate'sapplication:didFinishLaunchingWithOptions:
метод:
[[UINavigationBar appearance] setTitleTextAttributes:
@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
Комментируя эту строку, добьемся цели, но разрушаем остальную часть приложения, поэтому я попытался специально установить titleTextAttributes в пустой словарь для:MFMailComposeViewController
Попытка № 1
[[UINavigationBar appearanceWhenContainedIn:
NSClassFromString(@"MFMailComposeViewController"), nil]
setTitleTextAttributes:@{ }];
Это приводит к той же аварии. А также
[[UINavigationBar appearanceWhenContainedIn:
NSClassFromString(@"MFMailComposeViewController"), nil]
setTitleTextAttributes:nil];
также приводит к той же аварии.
Попытка № 2
Я заметил, чтоMFMailComposeViewController
этоUINavigationController
так что, возможно, глобальные настройки внешнего вида локализованы для UIViewControllersвнутри UINavigationController. Я собрал некоторый код, чтобы выяснить, какие контроллеры представления находятся внутри MFMailComposeViewController:
for (UIViewController *viewController in mailViewController.viewControllers) {
NSLog(@"%@", NSStringFromClass([viewController class]));
}
Что приводит к выводу:
2013-11-08 11:04:05.936 [7108:907] MFMailComposeInternalViewController
Так я попробовал(хотя этоплохая практика полагаться на Apples private view контроллеры):
[[UINavigationBar appearanceWhenContainedIn:
NSClassFromString(@"MFMailComposeViewController"), nil]
setTitleTextAttributes:@{ }];
А также
[[UINavigationBar appearanceWhenContainedIn:
NSClassFromString(@"MFMailComposeViewController"), nil]
setTitleTextAttributes:nil];
Но это все равно приводит к той же аварии!
Попытка № 3
// right before instantiating the MFMailComposeViewController
[[UINavigationBar appearance] setTitleTextAttributes:@{ }];
А также
[[UINavigationBar appearance] setTitleTextAttributes:nil];
Затем восстановление глобальных свойств внешнего вида в блоке завершенияdismissViewController:animated:completion:
Тем не менее, этот подход нетоже не работает. Кто-нибудь знает, как установить titleTextAttributes на глобальномUINavigationBar
появление без сбоев MFMailComposeViewController?