169 похожих чатов

Всем доброго времени суток, у меня есть viewController, который я

создал как swift файл. Открываю этот controller через код ниже и вызываю метод на flutter

let controller: FlutterViewController = window?.rootViewController as! FlutterViewController

let navigationController = UINavigationController(rootViewController: controller)
navigationController.setNavigationBarHidden(true, animated: false)
self.window!.rootViewController = navigationController
self.window!.makeKeyAndVisible()

Но когда я пытаюсь закрыть этот controller (по кнопке закрыть) через код ниже, то у меня при возврате на flutter приложение, крашится с ошибкой libc++abi: terminating due to uncaught exception of type NSException. Разное попробовал, но не понимаю в чем проблема

onCancel: {
result(nil)
navigationController.dismiss(animated: true)
}

12 ответов

21 просмотр

Оффтоп. Тут только Флаттер.

А на StackOverflow смотрел? Наверняка ты не первый с такой ошибкой.

Вот первая же ссылка https://stackoverflow.com/questions/64864197/error-on-flutter-ios-libcabi-dylib-terminating-with-uncaught-exception-of-ty

Bobur-Irgashev Автор вопроса

А ты уверен, что можно nil возвращать? Может быть, в Дарт-коде result не nullable, из-за этого Exception.

Sergio Molchanovsky
А ты уверен, что можно nil возвращать? Может быть,...

nil возвращать льзя. Не ясно какой NSException, так что это гадание на кофейной гуще. (Скорее всего кто-то делает result() не в основном потоке, просто обожаю)

Bobur-Irgashev Автор вопроса
Sergio Molchanovsky
А ты уверен, что можно nil возвращать? Может быть,...

Попробовал «» в result, но равно крашится приложение. Я думал что надо как то зарегестрировать этот controller, где-то в storyboard хз

Bobur-Irgashev Автор вопроса
Sergey Mogilnikov
Какой NSException, что в описании к нему?

Trying to dismiss the presentation controller while transitioning already. (<_UIFullscreenPresentationController: 0x7f9a78fa9fd0>) 2023-05-15 14:21:56.921996+0500 Runner[85914:8853804] *** Assertion failure in -[UIPresentationController _initViewHierarchyForPresentationSuperview:inWindow:]_block_invoke(), UIPresentationController.m:1594 2023-05-15 14:21:57.080962+0500 Runner[85914:8853804] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The _computeToEndFrameForCurrentTransition block is nil inside the _transitionViewForCurrentTransition block, value of outerStrongSelf currently : <_UIFullscreenPresentationController: 0x7f9a78fa9fd0>. This most likely indicates that an adaptation is happening after a transtion cleared out _computeToEndFrameForCurrentTransition. Captured debug information outside block: presentationController : <_UIFullscreenPresentationController: 0x7f9a78fa9fd0> presentedViewController : <UINavigationController: 0x7f9a802a1600> presentingViewController : <Runner.MyIdController: 0x7f9a79baa6b0>' *** First throw call stack: ( 1 CoreFoundation 0x000000011325c78b __exceptionPreprocess + 242 1 libobjc.A.dylib 0x000000010ec2ab73 objc_exception_throw + 48 2 Foundation 0x0000000111d11109 -[NSMutableDictionary(NSMutableDictionary) classForCoder] + 0 3 UIKitCore 0x000000012b4898ac __80-[UIPresentationController _initViewHierarchyForPresentationSuperview:inWindow:]_block_invoke + 3591 4 UIKitCore 0x000000012b486885 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke.421 + 404 5 UIKitCore 0x000000012c489971 -[_UIAfterCACommitBlock run] + 57 6 UIKitCore 0x000000012c489e71 -[_UIAfterCACommitQueue flush] + 191 7 UIKitCore 0x000000012bed06eb _runAfterCACommitDeferredBlocks + 782 8 UIKitCore 0x000000012bebefa2 _cleanUpAfterCAFlushAndRunDeferredBlocks + 96 9 UIKitCore 0x000000012bef4be1 _afterCACommitHandler + 58 10 CoreFoundation 0x00000001131b9c12 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23 11 CoreFoundation 0x00000001131b457f __CFRunLoopDoObservers + 515 12 CoreFoundation 0x00000001131b4aa2 __CFRunLoopRun + 1121 13 CoreFoundation 0x00000001131b4264 CFRunLoopRunSpecific + 560 14 GraphicsServices 0x000000011afdf24e GSEventRunModal + 139 15 UIKitCore 0x000000012bec07bf -[UIApplication _run] + 994 16 UIKitCore 0x000000012bec55de UIApplicationMain + 123 17 Runner 0x0000000102c9ed7f main + 63 18 dyld 0x000000010c0b1384 start_sim + 10 19 ??? 0x0000000203a86310 0x0 + 8651301648 ) libc++abi: terminating due to uncaught exception of type NSException Message from debugger: Terminated due to signal 6

https://stackoverflow.com/questions/25762466/trying-to-dismiss-the-presentation-controller-while-transitioning-already Если вкратце: пытаешься убрать контроллер который занят

Bobur-Irgashev Автор вопроса
Sergey Mogilnikov
https://stackoverflow.com/questions/25762466/tryin...

Хз почему но вместо того чтобы вызывать dismiss внутри onCancel и onResult, я перетащил его ниже present и это сработало func startMyId( passportData: String?, dateOfBirth: String?, lang: String, result: @escaping FlutterResult, navigationController: UINavigationController ) { let myIdController = MyIdController( passportData: passportData, dateOfBirth: dateOfBirth, lang: lang, onResult: { data in result(data) }, onCancel: { result(nil) } ) myIdController.modalPresentationStyle = .pageSheet navigationController.present(myIdController, animated: true, completion: nil) navigationController.dismiss(animated: true) }

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта