MvvmCross открывает страницу и напрямую переходит к подробному просмотру

#ios #xamarin #mvvmcross

#iOS #xamarin #mvvmcross

Вопрос:

У меня есть страница со списком, ListViewModel и для каждого элемента списка есть подробный просмотр DetailViewModel .

Теперь я хочу перейти со AnotherViewModel страницы списка и открыть непосредственно одно из подробных представлений.

Я не хочу открывать DetailViewModel напрямую AnotherViewModel , потому что пользователь должен перейти к ListViewModel при нажатии кнопки «Назад».

Для этой цели я вызываю в своем AnotherViewModel :

 this.ShowViewModel<ListViewModel>(new { showDetailId = "42" });
  

У ListViewModel меня есть свой метод инициализации, подобный этому:

 public void Init(string showDetailId)
{
    this.LoadList();

    if (!string.IsNullOrEmpty(showDetailId))
    {
        this.ShowViewModel<DetailViewModel>(new { detailid = showDetailId });
    }
}
  

Это отлично работает в Android, но в iOS представления каким-то образом перепутываются: я вижу ListView, но также и кнопку «< Назад». Нажав «< Назад», приложение зависает.

Я ожидал бы увидеть DetailView и «< Back», которые должны привести обратно к ListView.

Комментарии:

1. Возможно, было бы проще перейти к подробному просмотру, обработать кнопку «Назад» и перейти к просмотру списка. Вы можете управлять стеком в презентаторе, чтобы он работал, просто вернувшись назад.

2. Пользовательский презентатор, отложенный навигационный вызов или переключатель где-то в вызывающем коде — определенно лучший способ сделать это здесь — отображение ViewModel из Init вызывает повторные вызовы представления / навигации, что может вызвать проблемы с пользовательским интерфейсом как на iOS, так и на Windows.