如何使用 UIButton 停止特定功能?
Posted
技术标签:
【中文标题】如何使用 UIButton 停止特定功能?【英文标题】:How do I stop a specific function by using a UIButton? 【发布时间】:2015-09-07 23:15:55 【问题描述】:我有用户注册视图和一个关闭视图的关闭按钮。对于用户名文本字段,我使用textFieldShouldEndEditing
方法发出服务器请求以检查该用户名是否可用,如果不可用则发送警报。问题是,如果我插入一个已经被占用的用户名并且我关闭视图,就好像我不想再注册一样,该警报仍会显示在另一个视图上。如何在取消按钮中实现一些否定textFieldShouldEndEditing
函数的代码?
这是我的textFieldShouldEndEditing
代码:
func textFieldShouldEndEditing(textField: UITextField) -> Bool
var isTaken: Bool = false
if textField == usernameTxt var query = PFQuery(className: "_User")
query.whereKey("username", equalTo: usernameTxt.text)
query.findObjectsInBackgroundWithBlock
(objects: [AnyObject]?, error: NSError?) in
if error == nil
if (objects!.count > 0)
isTaken = true
let myAlert = SCLAlertView().showError("Error", subTitle: "username \(textField.text) is already taken", closeButtonTitle: "OK")
else
println("Username is available. ")
else
println("error")
return true
无论视图是否被关闭,警报仍然显示,如果视图不再存在,我如何让它停止?
【问题讨论】:
用相关代码更新您的问题。 【参考方案1】:在您的应用委托中
添加变量
var signUpOn = false
接下来,在您的注册视图控制器中添加这些方法以在您进出时更改 singUpOn 变量。
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
(UIApplication.sharedApplication().delegate as! AppDelegate).signUpOn = true
override func viewWillDisappear(animated: Bool)
super.viewWillDisappear(true)
(UIApplication.sharedApplication().delegate as! AppDelegate).signUpOn = false
然后在查询的完成块中检查标志并显示警报。
func textFieldShouldEndEditing(textField: UITextField) -> Bool
var isTaken: Bool = false
if textField == usernameTxt
var query = PFQuery(className: "_User")
query.whereKey("username", equalTo: usernameTxt.text)
query.findObjectsInBackgroundWithBlock
(objects: [AnyObject]?, error: NSError?) in
if error == nil
if (objects!.count > 0)
isTaken = true
if (UIApplication.sharedApplication().delegate as! AppDelegate).signUpOn
let myAlert = SCLAlertView().showError("Error", subTitle: "username \(textField.text) is already taken", closeButtonTitle: "OK")
else
println("Username is available. ")
else
println("error")
return true
我不知道取消方法是否以正确的方式调用。如果它被正确调用并且没有取消块,那么可能不是我们取消查询的方式。我对 PFQuery 不太熟悉。
【讨论】:
好吧,关闭按钮从来没有以编程方式关闭视图,它只是在被选中时被塞回另一个视图 我还从query.cancel()
行收到一个错误,指出:atal 错误:在展开可选值时意外发现 nil
那你必须使用方法prepareForSegue()
我不能离开情节提要segue,然后将方法添加到按钮吗?
可以保留segue,不需要使用方法。检查上面的答案,让我知道它是否有效。以上是关于如何使用 UIButton 停止特定功能?的主要内容,如果未能解决你的问题,请参考以下文章
我无法弄清楚具有三种状态(启动、停止和重置)的 UIButton