2014-10-29 57 views
0

我有下面的按下登录按钮时发生的swift代码。长时间隐藏视图

@IBAction func login(sender: UIButton) 
{ 
    sender.hidden = true; 
    self.loader.hidden = false; 
    println("HIDDEN"); 
    sleep(2);   
} 

但是,在“HIDDEN”打印到控制台很久之后,登录按钮需要很长时间才能真正隐藏。我认为这是因为我添加了睡眠模拟延迟(2),但我不确定如何在隐藏按钮后让睡眠发生。

+0

使用GCD'dispatch_after' – 2014-10-29 18:59:52

+2

你不应该睡在按钮响应者中;这会导致您的应用程序在此期间无响应。你真的想用睡眠来完成什么? – 2014-10-29 19:00:13

+0

模拟使用远程服务器进行身份验证所需的时间 – 2014-10-29 19:01:25

回答

1

这些评论让我看到这个解决方案异步工作,因此不会阻塞导致隐藏动作暂停的主线程。

@IBAction func login(sender: UIButton) 
{ 
    sender.hidden = true; 
    self.loader.hidden = false; 

    dispatch_after(
     dispatch_time(
      DISPATCH_TIME_NOW, 
      Int64(3 * Double(NSEC_PER_SEC)) 
     ), 
     dispatch_get_main_queue(), { 
      let vc = self.storyboard?.instantiateViewControllerWithIdentifier("homeNavigation") as UIViewController; 
      self.presentViewController(vc, animated: true, completion: nil); 
    }) 



}