Что-то изменилось в недавнем обновлении Xamarin iOS или Xamarin Studio, и теперь я получаю странные ошибки с помощью просто PresentViewController. Этот же точный код работал месяц назад. Я думаю, что что-то в Xamarin изменилось, потому что они только недавно добавил строку «Module» в раскадровке Properties/WidgetPresentViewController, раскадровка не содержит контроллера вида
// Instantiate and push controller
UIStoryboard storyBoard = UIStoryboard.FromName("MainStoryboard", null);
CustomViewController navigationController = storyBoard.InstantiateViewController("CustomViewController") as CustomViewController;
this.InvokeOnMainThread(() => {
this.PresentViewController(
navigationController,
true,
null
);
});
Приведенный выше код генерирует эту ошибку, основанную на скриншоте ниже: раскадровки
Foundation.MonoTouchException: Исправлено исключение Objective-C. Имя: NSInvalidArgumentException Причина: Раскадровка() не содержит контроллер с идентификатором '' CustomViewController
My Xamarin Studios версии вид 5.8 построить 443 и Xamarin IOS является 8.8.0.2 и Xcode 6.2 (6776)
--------------- Обновление ----------------
Так я открываю раскадровку файл в текстовом редакторе и анализ кода, созданного Xamarin Designer. Контроллер, созданный несколько месяцев назад, имеет идентификатор storyboardIdentifier, но созданный сегодня контроллер не имеет идентификатора сканера, хотя я четко определил его в Xamarin Designer ... Это звучит проблематично. Вот код:
Старый контроллер генерироваться месяцев назад перед обновлением:
<navigationController definesPresentationContext="YES" id="123" sceneMemberID="viewController" storyboardIdentifier="RedViewNavigationController" restorationIdentifier="RedViewNavigationController">
<navigationBar key="navigationBar" contentMode="scaleToFill" id="126">
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
</navigationBar>
<connections>
<segue destination="125" kind="relationship" relationship="rootViewController" id="124"/>
</connections>
</navigationController>
Новый код генерируемой сегодня, что приводит к исключению:
<navigationController definesPresentationContext="YES" id="164" sceneMemberID="viewController" restorationIdentifier="JZCustom">
<navigationBar key="navigationBar" contentMode="scaleToFill" id="167">
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
</navigationBar>
<connections>
<segue destination="166" kind="relationship" relationship="rootViewController" id="165"/>
</connections>
</navigationController>
Так как только вы вручную открыть раскадровку файл текстовый редактор и добавить раскладникIdentifier, раскадровка открывается успешно без исключения. Похож на ошибку?
Благодарим Вас за обновление. Добавление файла storyboardIdentifier вручную в файл раскадровки работало для меня. Надеюсь, они скоро это исправит. – anguish
Я говорил с поддержкой Xamarin, говорят, что исправление ошибок находится в работе и проходит процесс QA. Лучшие варианты, которые я нашел, - это понизить версию Xamarin (и, возможно, xcode?) Или просто сделать обходной путь, который я предложил здесь. Но это обходное решение может привести к уродливому сломанному представлению раскадровки на будущее, когда они исправят ошибку ... – LampShade
Я просто делаю учебник Xamarin для многоэкранного приложения и получил эту ошибку. Я думал, что сделал что-то не так (я использовал Visual Studio, и код очень похож). Похоже, это ошибка. thx –