我有带有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;
来自另一个标签,但是我的方法无法重新运行。
我该如何解决这个问题?
答案 0 :(得分:0)
我找到了解决此问题的方法
在ViewDidAppear()
中运行方法或使用事件
答案 1 :(得分:0)
ViewDidLoad仅运行一次,第一次加载视图。下次ViewWillAppear()之后,将执行ViewDidAppear()。标签栏控制器中已经存在View。
因此,如果ViewController是Tab栏的一部分,则应将始终执行的代码放在ViewWillAppear()和ViewDidAppear()中。并且只需要运行一次的代码应该放在ViewDidLoad()中。