我知道我的问题有趣的标题。对不起。这是我的问题; 我正在做简单的登录界面(使用facebook框架)。如果用户想要使用他/她的Facebook帐户登录,首先他/她必须确认Facebook页面。然后我得到他们的电子邮件地址,姓名,姓名等用户的信息。
之后,我只是问他们的应用密码。此密码屏幕是一个视图。并在主视图上打开(不作为新的viewcontroller。它在主视图上的视图)并在确认facebook页面之后出现这个wiew。
在此密码视图中有2个文本框和2个按钮。 paswword(和确认)的文本框和第一个按钮向我的Web服务发送带有用户信息的请求。和其他按钮是"取消"按钮。
这是问题所在。当用户发送请求时,我创建了用于等待响应的nsnotification。得到回应后我想要这个密码视图得到隐藏。
这是代码:
@IBAction func buttonSave(sender: AnyObject) {
var myObj = connectObject()
myObj.sendRequest("http://localhost:8888/iphone/hearMe/index.php", param: "id=test123")
NSNotificationCenter.defaultCenter().addObserver(self, selector: "actOnSpecialNotification", name: "sendDataCheck", object: nil)
}
func actOnSpecialNotification() {
println("ok I got success respond from webservice")
self.viewPassword.hidden = true /*This is my view */
}
使用此代码。 " viewPassword"视图隐藏但不是立即。它在10或15秒后隐藏。如何在收到网络服务的回复后立即隐藏该视图?
答案 0 :(得分:2)
从您的问题中不清楚10-15秒是在按下按钮和隐藏视图之间,还是在打印“ok I got ...”和隐藏视图之间。
如果在按下按钮并调用actOnSpecialNotification()
之间存在滞后,则上述代码对我们没有帮助。我们需要知道哪个对象发布了通知sendDataCheck
以及为什么需要这么长时间。也许只需要很长时间才能与网络通信。也许它会在您开始观察之前发布通知。您可能希望在发送请求之前而不是之后调用addObserver()
(以防万一中存在异步操作)。
如果滞后是在打印“ok I go ...”行和隐藏视图之间,那么最常见的原因是通知是在后台队列上发布的。除了主队列之外,您无法与UIKit进行任何交互,并且当您这样做时,奇怪的滞后是一种常见的症状。
(旁注:如果有疑问,请使用let
,而不是var
。myObj
在此更好地定义let
。这有助于防范多种错误。)