Как правильно перемещаться по стеку навигации в Xamarin.ios? - PullRequest
0 голосов
/ 15 февраля 2019

В настоящее время я работаю над проектом в Xamarin.iOS и не знаю, как работает система стеков.

У меня есть меню, в котором я выбираю язык своего приложения, и я хотел бы на лету обновить язык на всех предыдущих страницах, когда я выбираю другой язык.

Когда я нажимаю на предыдущую кнопку в моих настройках языка, предыдущая страница не переводится, поэтому я решил создать новый ViewController, который я помещаю на вершину стека с помощью this.NavigationController.PushViewController(new ViewController(), true)

но я не думаю, что это лучший способ сделать это, поэтому я попытался

this.NavigationController.PopToRootViewController(true) получить корень ViewController, но есть ли способ получить только предыдущую страницу в стеке?

public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
    var cell = this.GetCell(tableView, indexPath);

    cell.SelectionStyle = UITableViewCellSelectionStyle.None;

    var previousIndexPath = NSIndexPath.FromRowSection(this.selectedIndex, 0);

    this.selectedIndex = indexPath.Row;

    var selectedLanguage = this.supportedCultures[this.selectedIndex];

    Localization.Culture = selectedLanguage;

    this.SaveLanguageToUserDefault(selectedLanguage);

    this.TableView.ReloadRows(new NSIndexPath[] { previousIndexPath,indexPath }, UITableViewRowAnimation.None);


    this.NavigationController.PopToRootViewController(true); 

    //this.NavigationController.PushViewController(new ViewController(), true);

}

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

В iOS, если вы используете NavigationController и хотите перейти к предыдущему ViewController, вы используете метод PopViewController в NavigationProperty.

this.NavigationController.PopViewController(true);

Это заставит ваше приложение закрыть текущую страницу и покажет предыдущую.

Смотри, что это отличается от PopToRootViewController.

Надеюсь, это поможет.-

0 голосов
/ 15 февраля 2019

Когда вы нажимаете кнопку возврата ViewDidAppear, на следующей странице вызывается medthod.Здесь вы пишете свою логику как после открытия уведомления при возврате счетчика настроек 0 и т. Д.

public override void ViewDidAppear(bool animated) 
{
  base.ViewDidAppear(animated);                      
  DashboardItem.NotificationCount = 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...