如何在rest api从服务器获取数据时显示UIActivityIndi catorView
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在rest api从服务器获取数据时显示UIActivityIndi catorView相关的知识,希望对你有一定的参考价值。
我想在从服务器接收数据时显示UIActivityIndicatorView。我试过了,但它不可见:
public partial class MyFirst: UIViewController
{
UIActivityIndicatorView spinner;
public MyFirst(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
base.ViewDidLoad();
picker.ValueChanged += (sender, e) =>
{
loadDetails(picker.SelectedValueId);
};
spinner = new UIActivityIndicatorView
{
Frame = new CGRect(0, 0, 60, 60),
Color = UIColor.Black
};
spinner.Center = new CGPoint(View.Bounds.Width / 2,
View.Bounds.Height / 2);
View.AddSubview(spinner);
}
public void loadDetails(string userId)
{
spinner.StartAnimating();
var client = new RestClient("my web service URL");
var request = new RestRequest(Method.POST);
request.AddParameter("userid", userId);
IRestResponse response = client.Execute(request);
var content = response.Content;
var deserializedObject = JsonConvert.DeserializeObject<FleetList>(content);
var fleets = deserializedObject.ownersdara;
if (fleets.Count > 0)
{
spinner.StopAnimating();
tableView.Source = new tableSource(fleets .ToArray());
tableView.ReloadData();
}
}
}
在这里,我使用restsharp来调用Web服务。现在,当我从picker更改值时,它将调用loadDetails
函数。在这个函数中,我写了spinner.StartAnimating();
但它没有显示。
我从服务器获取所有数据后绑定TableView数据源。
在接收数据时调用其余API并在获取所有数据后再次隐藏它时,我怎么能show UIActivityIndicatorView
?
答案
我在我身边做了测试,你应该把ActivityIndicatorViewStyle
设置为UIActivityIndicatorView
,之后它应该可以工作了。
另一答案
我在viewWillAppear(_ animated:Bool)上调用了api,因为我想在屏幕出现时获取数据。我在这里从firebase获取数据。始终在从数据库获取数据时使用完成处理程序,该数据库将在显示微调器的同时在后台获取数据,并且一旦获取数据,它将向用户显示。
//Start your spinner before calling api
self.startAnimating()
var ref: DatabaseReference!
ref = Database.database().reference(fromURL: kFirebaseLink)
ref.observe(DataEventType.value, with: { (snapshot) in
print("data fetched of : (snapshot)")
if let dict = snapshot.value as? [String : AnyObject] {
//fill array from the data fetched from database
//Stop your spinner here when your data is fetched.
self.stopAnimating()
if self.array.count > 0 {
// Data fetced from database. populate table
self.tblView.reloadData()
}else{
// there are no data in Database.
}
}
})
以上是关于如何在rest api从服务器获取数据时显示UIActivityIndi catorView的主要内容,如果未能解决你的问题,请参考以下文章
如何在使用 AJAX、Django REST API 和 jQuery 以模式形式更新记录时显示外键字段名称而不是 ID
当 API 返回空数据时显示警告(Vue.js / Axios)