如何从其他类运行关闭视图函数?

时间:2016-12-24 13:48:22

标签: ios swift xcode view

我创建了一个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有关,但我不知道到底是什么。

1 个答案:

答案 0 :(得分:0)

您的代码没有意义。您不应该在集合视图之外使用集合视图单元格。您创建一个新对象并期望它指向当前视图控制器上的按钮。它没有赢。您应该将视图控制器的IBAction方法放在视图控制器中。

您需要停下来阅读iOS应用程序设计的基础知识。现在你的错误比正确的更多,你只会感到沮丧。