У меня есть View Controller в раскадровке только с mapview.
class MapVC: UIViewController {
class func viewController () -> MapVC {
let storyboard = UIStoryboard(name: "Dashboard", bundle: nil)
return storyboard.instantiateViewController(withIdentifier: "MapVC") as! MapVC
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
У меня простой экран входа в систему
При действии кнопки входа в систему я вызываю этот метод
private func addChildVC (_ vc:UIViewController) {
self.removeAllChild()
self.addChild(vc)
vc.view.frame = self.view.bounds
self.view.addSubview(vc.view)
vc.didMove(toParent: self)
self.currentCenterViewController = vc
}
С участием
MapVC.viewController()
Приложение вылетает
vc.view.frame = self.view.bounds
Странно, если я отлаживаю, как прикрепленный отладчик, и когда я нажимаю на приложение входа в систему, не происходит сбой, но когда отладчик не подключен при запуске, а затем я запускаю приложение в симуляторе, затем присоединяю процесс, и когда я нажимаю кнопку входа в систему, приложение вылетает
Контроллер текущего представления также не работает, вылетает приложение
Если я удалю Mapview из раскадровки, приложение будет работать нормально в обоих случаях.
Когда я проверяю, vc.isViewLoaded
возвращает false
попробовал loadViewIfRequired () Очистить производные данные, перезапустить чистый проект xcode. Убедитесь, что я добавил правильные идентификаторы
Я не могу понять причину Пожалуйста, помогите
РЕДАКТИРОВАТЬ
Образец приложения
https://drive.google.com/open?id=1-otaZhhhDEH4p29CgQP7xZSX9tizceq8
Действия по воспроизведению
1) Запускаем в любом симуляторе ios 12
2) Нажмите стоп из xcode
3) Из симулятора запустите приложение
.
4) Нажмите кнопку
РЕДАКТИРОВАТЬ2
видео выпуска https://drive.google.com/file/d/1z9C3Re_oVYkRncnE22xRoef2Kv2WyzId/view
Сообщить об ошибке https://bugreport.apple.com/web/?problemID=46774084
@MayurKarmur да, пожалуйста, дайте мне минутку
А также скажите мне, какой XCode вы используете.
@MayurKarmur с использованием xcode10, swift 4.2. добавлен образец проекта
Спасибо за ссылку, но в проекте нет расширения раскадровки, вместо этого он выглядит как xml.
@MayurKarmur Не могли бы вы попробовать drive.google.com/open?id=1-otaZhhhDEH4p29CgQP7xZSX9tizceq8
ваш проект работает без проблем
@Sh_Khan Пожалуйста, прекратите отладку и просто запустите ее из симулятора
карта отображается в симуляторе
@Sh_Khan Могу я поделиться видео?
посмотреть временно в режиме редактирования .........
@Sh_Khan Пожалуйста, посмотрите drive.google.com/open?id=1z9C3Re_oVYkRncnE22xRoef2Kv2WyzId
@Sh_Khan Я добавил видео, о котором идет речь, любая помощь
Я не знаю, что на самом деле проблема и почему ваше приложение вылетает. Но я нашел решение. Добавление MapKit.framework в Свяжите двоичный файл с библиотеками исправит вашу проблему.
Я надеюсь, что это поможет вам.
в контроллере представления просто добавление import MapKit
также решает проблему Спасибо :) \
Тем не менее, остался вопрос, почему он работает при подключенном отладчике?
@PrashantTukadiya, Вы можете поднять этот вопрос как новый вопрос.
Нашел причину !! добавлено в мой ответ
Я нашел настоящую причину этого.
Это из-за просмотреть структуру отладчика
Вот ответ от команды разработчиков Apple
Engineering has provided the following information regarding this issue:
The sample project provided is not configured correctly.
The application is using the MapKit framework, but has not been configured to link with MapKit. When run using the debugger, MapKit is pulled in because it’s linked by the view debugger framework.
When the app is launched from the simulator, without the view debugger, MapKit will not be loaded into the runtime as the app has not specified this as a dependency and therefor it crashes.
Updating your sample project to link MapKit solves the issue with the application crashing.
Можете ли вы поделиться проектом, если это демонстрационное приложение?