我创建了一个SignUp视图(class SignUp: UICollectionViewCell
),我有一个代码可以再次关闭该视图,例如用一个关闭按钮。
我在另一个类(class SignUpLauncher: NSObject, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout
)中启动该视图,并且要关闭的代码也在该类中。
现在我想在注册成功时关闭该视图。在我的SignUp类中,我运行它:
let signUpLauncher = SignUpLauncher()
func handleClose(){
signUpLauncher.handleClose()
}
FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, err) in
if let error = err {
print(error.localizedDescription)
} else {
guard let uid = user?.uid else{
return
}
//Successfully authenticated user
print("Sucess")
let ref = FIRDatabase.database().reference(fromURL: "myURL.com/")
let usersRef = ref.child("Users").child(uid)
let values = ["name": name, "email": email]
usersRef.updateChildValues(values, withCompletionBlock: { (error, ref) in
if error != nil {
print(error)
return
}
print("Saved user successfully into DB")
self.handleClose()
})
}
})
这是handleClose()
类中的SignUpLauncher
函数:
func handleClose(){
UIView.animate(withDuration: 0.5) {
self.closeButton.alpha = 0
if let window = UIApplication.shared.keyWindow{
self.self.collectionView.frame = CGRect(x: 0, y: window.frame.height, width: self.collectionView.frame.width, height: self.collectionView.frame.height)
self.navBar.frame = CGRect(x: 0, y: window.frame.height, width: self.navBar.frame.width, height: 65)
self.closeButton.frame = CGRect(x: window.frame.width - 34 ,y: window.frame.height + 30,width: 18,height: 18)
}
}
}
问题是,什么都没发生。我认为,它与self
有关,但我不知道到底是什么。
答案 0 :(得分:0)
您的代码没有意义。您不应该在集合视图之外使用集合视图单元格。您创建一个新对象并期望它指向当前视图控制器上的按钮。它没有赢。您应该将视图控制器的IBAction方法放在视图控制器中。
您需要停下来阅读iOS应用程序设计的基础知识。现在你的错误比正确的更多,你只会感到沮丧。