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

时间:2018-12-25 13:09:17

标签: ios xamarin xamarin.ios uitabbarcontroller

我有带有Tab栏的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;来自另一个标签,但是我的方法无法重新运行。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法

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

答案 1 :(得分:0)

ViewDidLoad仅运行一次,第一次加载视图。下次ViewWillAppear()之后,将执行ViewDidAppear()。标签栏控制器中已经存在View。

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