更改选项卡控制器选项卡 (iOS) 时运行方法



我有xamarin ios应用程序,带有选项卡栏。

当我运行主选项卡时,我调用方法

这是主选项卡的代码

public partial class ExperienceTableViewController : UIViewController
{
    public ExperienceTableViewController (IntPtr handle) : base (handle)
    {
    }
    public override async void ViewDidLoad()
    {
        base.ViewDidLoad();
        List<GettingExperiences.Experience> tableItems =  new List<GettingExperiences.Experience>();
        tableItems.Clear();
        tableItems = await ExperienceMethods.GetExperiencesAsync();
        ExperienceTableView.Source = new ExperienceSource(tableItems, this, this.NavigationController);
        ExperienceTableView.RowHeight = UITableView.AutomaticDimension;
        ExperienceTableView.EstimatedRowHeight = 80f;
        ExperienceTableView.ReloadData();
    }
}

当我在另一个选项卡中更改过滤器时,我需要返回并重新运行此方法 - tableItems = await ExperienceMethods.GetExperiencesAsync();

我像这样重定向

从另一个选项卡this.TabBarController.SelectedIndex = 0;,但我的方法不会重新运行。

我该如何解决这个问题?

我找到了这个问题的解决方案

只需在ViewDidAppear()或使用事件中运行方法

ViewDidLoad 只运行一次,第一次加载视图。下次 ViewWillAppear() 之后,ViewDidAppear() 将被执行。由于视图已经存在于选项卡栏控制器中。

因此,如果您的 ViewController 是选项卡栏的一部分,您应该将始终执行的代码放在 ViewWillAppear() 和 ViewDidAppear() 中。只需要运行一次的代码应该放在ViewDidLoad()中。

相关内容

最新更新