我有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()中。