如何从不同的类运行关闭视图功能?
Posted
技术标签:
【中文标题】如何从不同的类运行关闭视图功能?【英文标题】:How to run a close view function from a different class? 【发布时间】:2016-12-24 13:48:21 【问题描述】:我创建了一个注册视图 (class SignUp: UICollectionViewCell
),并且我有一个代码可以再次关闭该视图,例如带有关闭按钮。
我正在另一个类 (class SignUpLauncher: NSObject, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout
) 中启动该视图,并且要关闭的代码也在该类中。
现在我想在注册成功后关闭该视图。在我的注册课程中,我运行这个:
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()
)
)
这是SignUpLauncher
类中的handleClose()
函数:
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
有关,但我不知道具体是什么。
【问题讨论】:
你的问题没有多大意义。你让它听起来像你试图关闭一个集合视图单元格。你不应该那样做。集合视图拥有并管理其单元格。如果这不是你的意思,那么你需要更好地解释。 您说“我正在从 SignupLauncher 启动注册”。 “启动”是什么意思?应用程序启动。视图被添加到超级视图中。视图控制器被推送或呈现。也不清楚Signup
和SignupLauncher
是什么类。
为了更好地理解:我使用 UICollectionViewCell 作为构造创建了一个自定义视图(“SignUp”)。我不使用 UICollectionViewController。
@DuncanC 'Launcher' 包含 showView() 和 handleClose()。他们在屏幕上和屏幕外为 Cell 设置动画。
Collection 视图单元格并非设计用于也不应该在集合视图之外使用。没有理由这样做,也有很多理由不这样做。
【参考方案1】:
您的代码没有意义。您不应该在集合视图之外使用集合视图单元格。您创建一个新对象并期望它指向当前视图控制器上的按钮。它不会。您应该将视图控制器的 IBAction 方法放在视图控制器中。
您需要停下来继续阅读 ios 应用设计的基础知识。现在你错的比对的多,你只会感到沮丧。
【讨论】:
以上是关于如何从不同的类运行关闭视图功能?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Google App Script 中的文件运行保存的 Big Query 脚本? [关闭]