【发布时间】:2016-01-06 17:41:38
【问题描述】:
我试图在用户点击登录按钮时显示活动指示器。如果我将startActivityIndicator() 代码放在viewDidLoad() 中,它会完全按预期显示在屏幕上。当我作为btnSignIn() 的第一步执行它时,它永远不会出现。有点失落,所以我希望堆栈大师能提供帮助......
// Here are the variable declarations
var activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView()
var loadingView: UIView = UIView()
var viewCenter:CGPoint!
@IBAction func btnSignIn(sender: AnyObject) {
startActivityIndicator()
if validateEmailAddress(txtEmailAddress.text!) == false {
stopActivityIndicator(self.loadingView)
return
}
if validatePassword(txtPassword.text!) == false {
stopActivityIndicator(self.loadingView)
return
}
PFUser.logInWithUsernameInBackground(txtEmailAddress.text!, password:txtPassword.text!) {
(user: PFUser?, error: NSError?) -> Void in
if user != nil {
// Successful login.
self.txtPassword.resignFirstResponder()
self.txtEmailAddress.resignFirstResponder()
self.getUserInfo()
} else {
self.stopActivityIndicator(self.loadingView)
// The login failed. Display alert.
self.displayAlert("Whoops!", message: "Email or Password are incorrect.")
}
}
}
func startActivityIndicator() {
loadingView.frame = CGRectMake(0, 0, 80, 80)
loadingView.center = viewCenter
print(viewCenter)
loadingView.backgroundColor = UIColorFromRGB("444444", alpha: 0.7)
loadingView.clipsToBounds = true
loadingView.layer.cornerRadius = 10
activityIndicator.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.WhiteLarge
activityIndicator.center = CGPointMake(loadingView.frame.size.width / 2, loadingView.frame.size.height / 2);
view.addSubview(loadingView)
loadingView.addSubview(activityIndicator)
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
activityIndicator.startAnimating()
}
func stopActivityIndicator(uiView: UIView) {
activityIndicator.stopAnimating()
loadingView.removeFromSuperview()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
}
【问题讨论】:
-
@AnthonyDito UIActivityIndicatorView 没有方法 startActivityIndicator()
-
@AnthonyDito 我想这就是你的意思。不过他已经在调用那个方法了。
-
这很奇怪......像我在这里所做的那样从
viewDidLoad()调用该方法没有问题。 -
您确定在调用 Parse 之前没有遇到两个条件之一吗?你用断点测试了吗?
-
是的,我设置了断点以确保它不是他,以及一个断点以确保活动指示器代码正在执行。
标签: ios swift uiactivityindicatorview