2016-09-07 2 views
-5

У меня есть проект в быстром языке. Но некоторые файлы в objective c. В одном объекте c файл Account.h и Account.m файл.App неожиданно падает на кнопку clicingk 5-й раз

В окне учетной записи У меня есть кнопка входа в систему, которая имеет метод действий в файле Account.m.

В методе действий я вызываю один метод файла делегата, который дает предупреждение (UIAlertViewController), если данные для входа не заполнены.

Теперь я не заполняю данные для входа и не нажимаю кнопку входа. Если я выполняю это действие непрерывно, то при нажатии кнопки входа в систему 5-кратное приложение сбой.

Помогите решить эту проблему!

Ниже краш журнал от моего XCode:

* Нагрузочное приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: '- [NSLayoutConstraint inputViewController]: непризнанный селектор направлен например 0x7fd818d1c3b0' * Первый стек вызовов броска: (0 CoreFoundation 0x0000000103afad85 exceptionPreprocess + 165 1 libobjc.A.dylib
0x000000010356edeb objc_exception_throw + 48 2 CoreFoundation
0x0000000103b03d3d - [NSObject (NSObject) doesNotRecognizeSelector:] + 205 3 CoreFoundation 0x0000000103a49cfa ___forwarding_
+ 970 4 CoreFoundation 0x0000000103a498a8 _CF_forwarding_prep_0 + 120 5 UIKit
0x0000000104ba9f6b - [UIResponder (UIResponderInputViewAdditions) inputViewController] + 58 6 UIKit
0x0000000104ba9f6b - [UIResponder (UIResponderInputViewAdditions) inputViewController] + 58 7 UIKit
0x0000000104ba9f6b - [UIResponder (UIResponderInputViewAdditions) inputViewController] + 58 8 UIKit
0x0000000104ba9f6b - [UIResponder (UIResponderInputViewAdditions) inputViewController] + 58 9 UIKit
0x0000000104ba9f6b - [UIResponder (UIResponderInputViewAdditions) inputViewController] + 58 10 UIKit
0x0000000105009f1b - [UIPeripheralHost (UIKitInternal) _inputViewsForResponder: withAutomaticKeyboard:] + 312 11 UIKit 0x0000000105001aee - [UIPeripheralHost (UIKitInternal) _reloadInputViewsForResponder:] + 505 12 UIKit 0x0000000104baa7bc - [UIResponder (UIResponderInputViewAdditions) reloadInputViews] + 81 13 UIKit
0x0000000104ba7876 - [UIResponder becomeFirstResponder] + 617 14 UIKit 0x0000000104cbf7cd - [UIAlertController viewWillAppear:] + 126 15 UIKit 0x0000000104b342bd - [UIViewController _setViewAppearState: isAnimating:] + 710 16 UIKit 0x0000000104b34958 - [UIViewController viewWillAppear:] + 149 17 UIKit 0x0000000104b01de7 __56- [UIPresentationController runTransitionForCurrentState] _block_invoke + 934 18 UIKit
0x000000010499ff62 _runAfterCACommitDeferredBlocks + 317 19 UIKit
0x00000001049b3e4c _cleanUpAfterCAFlushAndRunDeferredBlocks + 95 20 UIKit 0x00000001049c0147 _afterCACommitHandler + 90 21 CoreFoundation 0x0000000103a1fc37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION
+ 23 22 CoreFoundation 0x0000000103a1fba7 __CFRunLoopDoObservers + 391 23 CoreFoundation 0x0000000103a157fb __CFRunLoopRun + 1147 24 CoreFoundation
0x0000000103a150f8 CFRunLoopRunSpecific + 488 25 GraphicsServices
0x000000010a510ad2 GSEventRunModal + 161 26 UIKit
0x0000000104993f09 UIApplicationMain + 171 27 UltraFresh
0x0000000102643792 main + 114 28 libdyld.dylib
0x0000000106e3e92d start + 1 29 ???
0x0000000000000001 0x0 + 1) LibC++ abi.dylib: оканчивающиеся неперехваченного исключением типа NSException

код тревоги дисплея:

func initAlertWithTitle(title:String ,message : String, cancelBtnTitle : String?, cancelButtonHandler : ((UIAlertAction)->())?, otherButtontitle : String?, otherButtonHandler : ((UIAlertAction)->())? , tag : Int , sender : UIViewController?) 
    { 
     return; 
     // If there is only one button withoput completion handler then we will display toast at the bottom of the screen same like in android App otherwise we will display alert. 
     if ((otherButtontitle == nil || otherButtontitle == "") && cancelButtonHandler == nil) 
     { 
      self.showToastWithMessage(message, sender:self.window!.rootViewController!) 
      return 
     } 
     let alertController : UIAlertController = UIAlertController.init(title: title, message: message, preferredStyle: .Alert) 
     alertController.view.tag = tag 

     let cancelAction : UIAlertAction = UIAlertAction.init(title: cancelBtnTitle, style: .Default, handler: cancelButtonHandler) 
     alertController.addAction(cancelAction) 

     if !(otherButtonHandler == nil) 
     { 
     let defaultAction : UIAlertAction = UIAlertAction.init(title: otherButtontitle, style: .Default, handler: otherButtonHandler) 
     alertController.addAction(defaultAction) 
     } 
     //  dispatch_async(dispatch_get_main_queue()) { // 2 
     if(sender == nil) 
     { 
     self.window!.rootViewController!.presentViewController(alertController, animated: true, completion: nil) 
     } 
     else 
     { 
      sender?.presentViewController(alertController, animated: true, completion: { 
       alertController.dismissViewControllerAnimated(true, completion: nil) 
      }) 
     } 
    } 
+1

может показать отчет о сбое –

+1

Используя свои способности к чтению ума, я предсказываю, что вы найдете ошибку ... ммм ... подождите, это придет ... в вашем коде! – Avi

+0

Если кто-то проголосовал за вопрос, пожалуйста, напишите причину. –

ответ

1

Я решил аварии:

Вот путь.

Я пишу метод отображения предупреждений в файле Account.m и использовал его вместо метода, написанного в файле Appdelegate.

Смежные вопросы