0
我自己回答了這個問題 - 現在就把它留在這裏,面向有同樣問題的人。
我的代碼非常簡單 - 一個自定義表,其中包含一個數據源以便從Web服務異步提供數據。如何讓我的RefreshControl在ViewDidAppear期間出現
爲了獲得最好的用戶體驗,我希望UIRefreshControl
可以在每當此控制器出現時加載動畫,而不是僅在列表被拉下時進行加載。
不幸的是,如果我在ViewDidAppear
期間撥打我的方法,則不會出現UIRefreshControl
。
我試圖從答案建議這些問題,但沒有人似乎爲我工作:
public partial class ControlCenterSelectionController : UITableViewController
{
public ControlCenterSelectionController (IntPtr handle) : base (handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
TableView.RefreshControl = new UIRefreshControl();
TableView.RefreshControl.ValueChanged += RefreshControlOnValueChanged;
}
private async void RefreshControlOnValueChanged(object sender, EventArgs eventArgs)
{
await UpdateDataSourceAsync();
}
public override async void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
TableView.SetContentOffset(new CGPoint(0, -TableView.RefreshControl.Frame.Size.Height), true);
await UpdateDataSourceAsync();
}
private async Task UpdateDataSourceAsync()
{
TableView.RefreshControl.BeginRefreshing();
var ccClient = DI.Instance.Get<IControlCenterRestClient>();
var controlCenters = await ccClient.GetAllAsync();
var source = new GenericViewSource<ControlCenter>(controlCenters, item => item.Name, ControlCenterSelected);
TableView.Source = source;
TableView.RefreshControl.EndRefreshing();
}
private void ControlCenterSelected(ControlCenter controlCenter)
{
var controller = this.InstantiateController(Constants.ViewControllerIds.ControlCenter) as ControlCenterController;
controller.ControlCenter = controlCenter;
this.NavigateTo(controller);
}
}
- UITableView UIRefreshControl Does Not Show Its View The First Time
- UIRefreshControl on viewDidLoad
- UIRefreshControl - beginRefreshing not working when UITableViewController is inside UINavigationController
所有我目前得到的是一個看起來空的屏幕,加載數據沒有ind然後在完成後更新屏幕。
有人可以發現一個錯誤?我找不到一個,因爲這個代碼很簡單。