2015-03-16 2 views
4

Что-то изменилось в недавнем обновлении 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

enter image description here enter image description here

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, раскадровка открывается успешно без исключения. Похож на ошибку?

+0

Благодарим Вас за обновление. Добавление файла storyboardIdentifier вручную в файл раскадровки работало для меня. Надеюсь, они скоро это исправит. – anguish

+0

Я говорил с поддержкой Xamarin, говорят, что исправление ошибок находится в работе и проходит процесс QA. Лучшие варианты, которые я нашел, - это понизить версию Xamarin (и, возможно, xcode?) Или просто сделать обходной путь, который я предложил здесь. Но это обходное решение может привести к уродливому сломанному представлению раскадровки на будущее, когда они исправят ошибку ... – LampShade

+0

Я просто делаю учебник Xamarin для многоэкранного приложения и получил эту ошибку. Я думал, что сделал что-то не так (я использовал Visual Studio, и код очень похож). Похоже, это ошибка. thx –

ответ

0

У меня такая же ошибка. По какой-то причине работает старый код, который использует тот же самый подход. Возникает проблема при создании нового ViewController.

1

Для меня единственным решением было открыть xCode и добавить там раскадровку. Совсем по поводу того, эта ошибка достигла стабильного канала, который я работаю ...

Примечание: Ручное редактирование раскадровки XML не дал мне правильный результат выполнения ...

+0

Да, ошибка, похоже, специфична для Xamarin, поэтому ее выполнение в xcode должно работать нормально. Последнее, что я проверил, исправление ошибки перемещалось по альфа-каналу, скоро оно должно быть в Стабильном канале, если оно еще не было. В последнее время я не обновляюсь. – LampShade

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