2013-11-26 7 views
4

У меня есть UIButton, который на приземлении выдает UIViewController для просмотра. В viewDidLoad, приложение происходит сбой с исключением:iOS сбой при настройке навигационных элементов

- [UILabel stringByTrimmingCharactersInSet]: непризнанные селектор направлен например 0x16674e30

Вот код, вызывающий сбой:

viewController.navigationController.navigationBar.barStyle = UIBarStyleBlack; 
UIImage *logo = [UIImage imageNamed:backgroundImageName]; 
UIImageView *logoView = [[UIImageView alloc] init]; 
logoView.image = logo; 
logoView.frame = CGRectMake(0, 0, 50, 30); 
viewController.navigationItem.titleView = logoView; // crash at this line 

Последняя строка - это та, которая вызывает сбой. Я использую SWRevealController в качестве меню стиля слайдов в левом ящике. У меня есть 5 других UIViewControllers, используя тот же самый код и работая правильно, но я не могу найти разницы между ними и другими классами. Я знаю, что это может показаться немного неопределенным, но я не знаю, где это сделать. Любая помощь будет принята с благодарностью.

Вот стек при аварии на главной теме:

#0 0x378416a0 in objc_exception_throw() 
#1 0x2d4e47b6 in -[NSObject(NSObject) doesNotRecognizeSelector:]() 
#2 0x2d4e30ae in ___forwarding___() 
#3 0x2d431dc8 in __forwarding_prep_0___() 
#4 0x2fcfc78e in -[UINavigationItem initWithTitle:]() 
#5 0x2fcfc6dc in -[UIViewController(UINavigationControllerItem) navigationItem]() 
#6 0x00110b94 in -[CSUtility addleftButtonToNavItem:rightButton:background:rightButtonTitle:forViewController:revealViewController:overrideLeft:] at /Users/shawn/Documents/TruthIt/TruthIOS/TruthiOS/TruthiOS/CSUtility.m:59 
#7 0x0012cd92 in -[CSQuestionDetailViewController viewDidLoad] at /Users/shawn/Documents/TruthIt/TruthIOS/TruthiOS/TruthiOS/CSQuestionDetailViewController.m:227 
#8 0x2fc6995a in -[UIViewController loadViewIfRequired]() 
#9 0x2fc69718 in -[UIViewController view]() 
#10 0x2fdf5c2a in -[UINavigationController _startCustomTransition:]() 
#11 0x2fd13a16 in -[UINavigationController _startDeferredTransitionIfNeeded:]() 
#12 0x2fd13820 in -[UINavigationController __viewWillLayoutSubviews]() 
#13 0x2fd137b8 in -[UILayoutContainerView layoutSubviews]() 
#14 0x2fc65352 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:]() 
#15 0x2f8eb942 in -[CALayer layoutSublayers]() 
#16 0x2f8e7166 in CA::Layer::layout_if_needed(CA::Transaction*)() 
#17 0x2f8e6ff8 in CA::Layer::layout_and_display_if_needed(CA::Transaction*)() 
#18 0x2f8e6a0c in CA::Context::commit_transaction(CA::Transaction*)() 
#19 0x2f8e681e in CA::Transaction::commit()() 
#20 0x2f8e054c in CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)() 
#21 0x2d4abf68 in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__() 
#22 0x2d4a98f6 in __CFRunLoopDoObservers() 
#23 0x2d4a9c42 in __CFRunLoopRun() 
#24 0x2d414470 in CFRunLoopRunSpecific() 
#25 0x2d414252 in CFRunLoopRunInMode() 
#26 0x321482ea in GSEventRunModal() 
#27 0x2fcc9844 in UIApplicationMain() 
#28 0x00111d7c in main at /Users/shawn/Documents/TruthIt/TruthIOS/TruthiOS/TruthiOS/main.m:16 

Это любопытное, если я переключаю код вида на viewWillAppear я все еще получаю аварии просто не из моего кода. Вот что трассировка стека:

Thread 1, Queue : com.apple.main-thread 
#0 0x378416a0 in objc_exception_throw() 
#1 0x2d4e47b6 in -[NSObject(NSObject) doesNotRecognizeSelector:]() 
#2 0x2d4e30ae in ___forwarding___() 
#3 0x2d431dc8 in __forwarding_prep_0___() 
#4 0x2fcfc78e in -[UINavigationItem initWithTitle:]() 
#5 0x2fcfc6dc in -[UIViewController(UINavigationControllerItem) navigationItem]() 
#6 0x2fd1559a in -[UINavigationController _hasTranslucentNavigationBarIncludingViewController:]() 
#7 0x2fd1542c in -[UINavigationController _shouldNavigationBarInsetViewController:orOverlayContent:]() 
#8 0x2fd14c3e in -[UINavigationController _frameForViewController:]() 
#9 0x2fdf5c48 in -[UINavigationController _startCustomTransition:]() 
#10 0x2fd13a16 in -[UINavigationController _startDeferredTransitionIfNeeded:]() 
#11 0x2fd13820 in -[UINavigationController __viewWillLayoutSubviews]() 
#12 0x2fd137b8 in -[UILayoutContainerView layoutSubviews]() 
#13 0x2fc65352 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:]() 
#14 0x2f8eb942 in -[CALayer layoutSublayers]() 
#15 0x2f8e7166 in CA::Layer::layout_if_needed(CA::Transaction*)() 
#16 0x2f8e6ff8 in CA::Layer::layout_and_display_if_needed(CA::Transaction*)() 
#17 0x2f8e6a0c in CA::Context::commit_transaction(CA::Transaction*)() 
#18 0x2f8e681e in CA::Transaction::commit()() 
#19 0x2f8e054c in CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)() 
#20 0x2d4abf68 in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__() 
#21 0x2d4a98f6 in __CFRunLoopDoObservers() 
#22 0x2d4a9c42 in __CFRunLoopRun() 
#23 0x2d414470 in CFRunLoopRunSpecific() 
#24 0x2d414252 in CFRunLoopRunInMode() 
#25 0x321482ea in GSEventRunModal() 
#26 0x2fcc9844 in UIApplicationMain() 
#27 0x00124cf4 in main at /Users/shawn/Documents/TruthIt/TruthIOS/TruthiOS/TruthiOS/main.m:16 

Ok Спасибо за идею rmaddy я думаю, что вы на что-то, но я до сих пор не получил это совсем все так, как там еще. Я (глупо, я знаю, что я сейчас торопился) имел UILabel, определяемый как с названием названия. Я изменил, что questionTitle и теперь я получаю другую ошибку - [UILabel copyWithZone] непризнанным селектор отправляется, например, еще раз здесь трассировки стека:

Thread 1, Queue : com.apple.main-thread 
#0 0x378416a0 in objc_exception_throw() 
#1 0x2d4e47b6 in -[NSObject(NSObject) doesNotRecognizeSelector:]() 
#2 0x2d4e30ae in ___forwarding___() 
#3 0x2d431dc8 in __forwarding_prep_0___() 
#4 0x2fcfb9a8 in -[UIViewController setTitle:]() 
#5 0x2de203b6 in -[NSObject(NSKeyValueCoding) setValue:forKey:]() 
#6 0x2de31ffc in -[NSObject(NSKeyValueCoding) setValue:forKeyPath:]() 
#7 0x2d4507e8 in -[NSArray makeObjectsPerformSelector:]() 
#8 0x2ffc44de in -[UINib instantiateWithOwner:options:]() 
#9 0x2ff260fa in -[UIViewController _loadViewFromNibNamed:bundle:]() 
#10 0x2fd87b58 in -[UIViewController loadView]() 
#11 0x2fc6979c in -[UIViewController loadViewIfRequired]() 
#12 0x2fc69718 in -[UIViewController view]() 
#13 0x2fdf5c2a in -[UINavigationController _startCustomTransition:]() 
#14 0x2fd13a16 in -[UINavigationController _startDeferredTransitionIfNeeded:]() 
#15 0x2fd13820 in -[UINavigationController __viewWillLayoutSubviews]() 
#16 0x2fd137b8 in -[UILayoutContainerView layoutSubviews]() 
#17 0x2fc65352 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:]() 
#18 0x2f8eb942 in -[CALayer layoutSublayers]() 
#19 0x2f8e7166 in CA::Layer::layout_if_needed(CA::Transaction*)() 
#20 0x2f8e6ff8 in CA::Layer::layout_and_display_if_needed(CA::Transaction*)() 
#21 0x2f8e6a0c in CA::Context::commit_transaction(CA::Transaction*)() 
#22 0x2f8e681e in CA::Transaction::commit()() 
#23 0x2f8e054c in CA::Transaction::observer_callback(__CFRunLoopObserver*, unsigned long, void*)() 
#24 0x2d4abf68 in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__() 
#25 0x2d4a98f6 in __CFRunLoopDoObservers() 
#26 0x2d4a9c42 in __CFRunLoopRun() 
#27 0x2d414470 in CFRunLoopRunSpecific() 
#28 0x2d414252 in CFRunLoopRunInMode() 
#29 0x321482ea in GSEventRunModal() 
#30 0x2fcc9844 in UIApplicationMain() 
#31 0x0008cccc in main at /Users/shawn/Documents/TruthIt/TruthIOS/TruthiOS/TruthiOS/main.m:16 
+0

Пробовал cmd-shift-k? Кроме того, попробовал обернуть изображение в представлении? – Undo

+0

Да, я просто попробовал еще раз и не купил. :( –

+1

Можете ли вы разместить свой стек? –

ответ

0

С StackTrace, это выглядит, как вы пытаетесь для создания нового элемента навигации с помощью initWithTitle :, но вы передаете UILabel в инициализатор вместо NSString. Может быть, вы хотите передать значение метки вместо инициализатора? Проверка

[CSUtility addleftButtonToNavItem:rightButton:background:rightButtonTitle:forViewController:revealViewController:overrideLeft:] at /Users/shawn/Documents/TruthIt/TruthIOS/TruthiOS/TruthiOS/CSUtility.m:59 
Смежные вопросы