我回到页面后,我的活动指示似乎没有消失。它第一次消失了。然后我转到第二个视图控制器然后返回第一个视图控制器。据说所有UIViews都已出现,活动指标似乎没有出现。
我的代码
var activityView : UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(0,0, 50, 50)) as UIActivityIndicatorView
override func viewDidLoad() {
super.viewDidLoad()
Alamofire.request(.POST , "192.168.0.1/test", parameters: [])
.responseJSON { response in
if response.result.isSuccess {
var jsonObj = JSON(response.result.value!)
print(jsonObj)
self.activityView.stopAnimating()
}
}
}
override func viewDidAppear(animated: Bool) {
activityView.center = self.view.center
activityView.hidesWhenStopped = true
activityView.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityView)
activityView.startAnimating()
}
答案 0 :(得分:1)
您正在viewDidAppear
中展示您的activityIndicator。这就是为什么当你从第二个回到第一个时出现的原因。另请查看view life cycle。只有在初始化视图控制器时才会调用viewDidLoad
,但在显示视图控制器时将调用viewDidAppear
。 (返回导航或再次出现)
因此,最好在viewDidLoad
中添加视图,并且活动指示符应始终与其网络呼叫相关联。在开始呼叫之前显示活动指示器并在完成后隐藏或删除。
此外,您错过了super
来电。在覆盖时务必调用超级方法。
例如:
override func viewDidLoad() {
super.viewDidLoad()
addActivityIndicator()
fetchRemoteData()
}
func addActivityIndicator() {
activityView.center = self.view.center
activityView.hidesWhenStopped = true
activityView.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityView)
}
func fetchRemoteData() {
activityView.startAnimating()
Alamofire.request(.POST , "192.168.0.1/test", parameters: [])
.responseJSON { response in
if response.result.isSuccess {
var jsonObj = JSON(response.result.value!)
print(jsonObj)
self.activityView.stopAnimating()
}
}
}
答案 1 :(得分:0)
你想隐藏并在你想要的时候显示你的活动指标。并且还要确保设置为bringSubviewToFront