我想在从服务器接收数据时显示 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 来调用网络服务。现在,当我更改选择器的值时,它将调用 loadDetails
函数。在这个函数中,我写了 spinner.StartAnimating();
但它没有显示。
我在从服务器获取所有数据后绑定(bind) TableView 数据源。
当接收数据时调用其余 API 并在获取所有数据后再次隐藏它时,如何显示 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.
}
}
})
关于ios - 如何在其余 api 从服务器获取数据时显示 UIActivityIndicatorView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47888777/