2016-11-26 2 views
0

Я пытаюсь представитьViewController, но разбился со следующей трассировкой стека. Может кто-нибудь, пожалуйста, проверьте и помогите.Сбой при представлении viewcontroller

Код для presentViewController

func moveToChatView(){ 
SwiftSpinner.show(Strings.loading) 

    let destViewController:GroupChatViewController = UIStoryboard(name:  "GroupChat", bundle: nil).instantiateViewControllerWithIdentifier("GroupChatViewController") as! GroupChatViewController 
destViewController.currentRiderRideID = self.riderRideId! 
if NSThread.isMainThread() == true{ 
self.presentViewController(destViewController, animated: true, completion: nil) 
}else{ 
    dispatch_sync(dispatch_get_main_queue()){ 
    self.presentViewController(destViewController, animated: true, completion: nil) 
    } 
} 
} 

Fatal Exception: NSRangeException 0 CoreFoundation 0x182b482d8 exceptionPreprocess 1 libobjc.A.dylib 0x1948140e4 objc_exception_throw 2 CoreFoundation 0x182a2f4c0 CFStringConvertNSStringEncodingToEncoding 3 UIKit 0x1879e01b4 - [UINib instantiateWithOwner: варианты:] 4 UIKit 0x1878dc318 - [UIViewController _loadViewFromNibNamed: bundle:] 5 UIKit 0x1875c09bc - [UIViewController loadVi ewIfRequired] 6 UIKit 0x1875c0928 - [UIViewController вид] 7 UIKit 0x187cb618c - [_ UIFullscreenPresentationController _setPresentedViewController:] 8 UIKit 0x1878c60dc - [UIPresentationController initWithPresentedViewController: presentingViewController:] 9 UIKit 0x1878e2378 - [UIViewController _presentViewController: withAnimationController: завершение:] 10 UIKit 0x1878e48c8 __62- [UIViewController presentViewController: анимированные: завершение:] _ block_invoke 11 UIKit 0x1876ae0ec - [UIViewController presentViewController: анимированные: завершение:] 12 Quickride 0x100451968 парциальное применяются для LiveRideMapViewController (moveToChatView() ->()) (замыкание # 1..) (LiveRideMapViewController.swift: 1868) 13 libdispatch.dylib 0x194e91954 _dispatch_client_callout 14 libdispatch.dylib 0x194e9f590 _dispatch_barrier_sync_f_slow_invoke 15 libdispatch.dylib 0x194e91954 _dispatch_client_callout 16 libdispatch.dylib 0x194e9620c _dispatch_main_queue_callback_4CF 17 CoreFoundation 0x182aff7f8 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE 18 CoreFoundation 0x182afd8a0 __CFRunLoopRun 19 CoreFoundation 0x182a292d4 CFRunLoopRunSpecific 20 GraphicsServices 0x18c47f6fc GSEventRunModal 21 UIKit 0x187626f40 UIApplicationMain 22 Quickride 0x100259a70 main (AppDelegate.swift: 23) 23 libdyld.dylib 0x194ebea08 start

+0

ли вы уверены, что 'GroupChatViewController' находится внутри вашего раскадровки' GroupChat', а не в 'xib'? –

+1

Можете ли вы сбросить точку останова и сообщить нам, какая строка конкретно вызывает исключение? – Erik

+0

Да, когда я пытаюсь представить GroupChatViewController, я проверяю поток в основном потоке или нет. В этом потоке он находится в фоновом потоке, поэтому он перешел в else block и однажды входил в dispatch_sync (dispatch_get_main_queue()) { self.presentViewController (destViewController, анимированный: true, завершение: nil) } Он разбился, это потому, что текущий контроллер просмотра недоступен –

ответ

0

Как правило, не используют dispatch_ синхронизации, но вместо того, чтобы использовать dispatch_ асинхр и вы не должны проверить если вы в главном потоке, если это операция UI, и есть вероятность того, что он будет на задней нить вобще dispatch_ асинхронной в основную очередь, которая будет выполнять операцию пользовательского интерфейса на следующем цикле выполнения на главную очереди и пользовательский интерфейс будет «гладким», попробуйте следующее:

func moveToChatView(){ 
    SwiftSpinner.show(Strings.loading) 

    let destViewController:GroupChatViewController = UIStoryboard(name:"GroupChat", bundle: nil).instantiateViewControllerWithIdentifier("GroupChatViewController") as! GroupChatViewController 
    destViewController.currentRiderRideID = self.riderRideId! 
    dispatch_async(dispatch_get_main_queue()){ 
     self.presentViewController(destViewController, animated: true,completion:nil) 
    } 
} 
Смежные вопросы