Когда я использовал MvvmCross 5, я кодировал все свои представления и избегал использования раскадровок для моего приложения iOS, написав это в моем AppDelegate: [Register ("AppDelegate")] публичный класс AppDelegate: ...

1
Drake 29 Дек 2020 в 10:02

1 ответ

Лучший ответ

Ни файлы Setup.cs, ни AppDelegate.cs не имеют никакого отношения к тому, представляете вы раскадровку или нет. Обычно все зависит от того, какие атрибуты презентации вы применяете к ViewController.

Однако в Info.plist есть некоторые вещи, которые меняют то, как MvvmCross ожидает настройки.

Теперь в вашем примере приложения, которое вы разместили на GitHub, вы можете сделать следующее, чтобы оно не использовало раскадровку:

  1. Удалить Main.storyboard
  2. В Info.plist установите для основного интерфейса значение (нет)
  3. В Info.plist установите для изображений запуска LaunchScreen.storyboard
  4. Удалите материал делегата сцены в Info.plist
  5. Удалите конструктор в MainViewController

Основная проблема заключается в том, что вы, по сути, сообщаете iOS, что ViewController имеет раскадровку, предоставляя этот конструктор:

public MainViewController() : base(nameof(MainViewController), null)
{
}

Также прошу iOS использовать раскадровки через Info.plist со всеми вещами делегирования сцены.

Я создал PR, показывающий, что нужно изменить, чтобы он работал без сториборда, и показывающий синий цвет фона, который вы установили в своем ViewController.

https://github.com/sinight95/TestApp/pull/1

2
Cheesebaron 2 Янв 2021 в 13:50