我正在编写一个 Parse 应用程序并使用 Parse LoginViewController 和 SignUpViewController。我一直在使用 SubclassConfigViewController 作为他们的 LoginAndSignUp 演示中的模型。正如他们在文档中所说,我想在注册开始之前检查各种用户名和密码。这应该发生在委托(delegate)函数“signUpViewControllerShouldSignBeginSignUp”
但是,它没有被调用并且该应用程序注册了任何人。它只检查电子邮件的格式是否有效以及用户名是否存在。我在函数的开头放了一个 println (Swift)。它从不打印。
我该怎么做才能强制运行此功能?
“loginViewControllerShouldLogInUser”按预期运行。
这是我的代码:
class LoginConfigViewController: UIViewController, PFLogInViewControllerDelegate, PFSignUpViewControllerDelegate
{
var loginViewController: LoginViewController! = LoginViewController()
var signUpViewController: SignUpViewController! = SignUpViewController()
override func viewWillAppear(animated: Bool)
{
if (PFUser.currentUser() == nil)
{
loginViewController.delegate = self
loginViewController.fields = PFLogInFields.UsernameAndPassword | PFLogInFields.LogInButton | PFLogInFields.SignUpButton | PFLogInFields.DismissButton
//signUpViewController.delegate = self;
signUpViewController.fields = PFSignUpFields.Default | PFSignUpFields.Additional | PFSignUpFields.DismissButton
loginViewController.signUpController = signUpViewController;
loginViewController.signUpController?.delegate = self
self.presentViewController(self.loginViewController, animated: false, completion: nil)
}
else
{
self.dismissViewControllerAnimated(false, completion: nil)
}
}
// MARK: - PFLogInViewControllerDelegate
func logInViewController(logInController: PFLogInViewController!, shouldLogInUser user: PFUser!, password: String!) -> Bool {
println("shouldLogIn...")
return true
}
func logInViewController(logInController: PFLogInViewController, shouldBeginLogInWithUsername username: String, password: String) -> Bool {
println("should login in \(username)")
return true
}
@IBAction func logInViewController(logInController: PFLogInViewController, didLogInUser user: PFUser) {
println("didLogInUser \(user.username)")
self.loginViewController.dismissViewControllerAnimated(false, completion: nil)
}
// Sent to the delegate when the log in screen is dismissed.
func logInViewControllerDidCancelLogin(logInController: PFLogInViewController!) {
println("User dismissed the logInViewController")
self.loginViewController.dismissViewControllerAnimated(false, completion: nil)
}
// MARK: - PFSignUpViewControllerDelegate
// Sent to the delegate to determine whether the sign up request should be submitted to the server.
func signUpViewControllerShouldBeginSignUp(signUpViewController: PFSignUpViewController!, info: NSDictionary) -> Bool {
println("signUpViewController::shouldBeginSignUp")
return true
}
// Sent to the delegate when a PFUser is signed up.
func signUpViewController(signUpViewController: PFSignUpViewController, didSignUpUser user: PFUser) {
println("didSignUpUser \(user.username)")
user.removeObjectForKey("additional")
self.signUpViewController.stopAI()
self.signUpViewController.dismissViewControllerAnimated(false, completion: nil)
self.loginViewController.dismissViewControllerAnimated(false, completion: nil)
}
// Sent to the delegate when the sign up attempt fails.
func signUpViewController(signUpViewController: PFSignUpViewController!, didFailtoSignUpWithError error: NSError) {
println("Failed to sign up...")
}
// Sent to the delegate when the sign up screen is dismissed.
func signUpViewControllerDidCancelSignUp(signUpViewController: PFSignUpViewController) {
println("User dismissed the signUpViewController")
signUpViewController.dismissViewControllerAnimated(false, completion: nil)
}
//MARK: - ()
func logOutButtonTapAction(sender: AnyObject) {
PFUser.logOut()
self.dismissViewControllerAnimated(false, completion: nil)
}
}
最佳答案
logincontroller 有一个名为 signUpController
的属性,它是由 logincontroller 调用的 signupcontroller。
因此,如果您想检查用户做了什么(注册或取消或其他),您需要通过调用以下命令来设置登录 Controller 的注册 Controller 的委托(delegate):
loginViewController.signUpController?.delegate = self
希望对你有帮助
关于swift - 未调用解析 SignUpViewController signUpViewControllerShouldSignBeginSignUp 委托(delegate)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038702/