【问题标题】:Long time to hide view长时间隐藏视图
【发布时间】:2014-10-29 18:55:57
【问题描述】:

当按下登录按钮时,我有以下 swift 代码。

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

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

【问题讨论】:

  • 使用 GCD dispatch_after
  • 你不应该睡在按钮响应器中;这将导致您的应用程序在此期间无响应。你真的想通过睡眠来完成什么?
  • 模拟通过远程服务器进行身份验证所需的时间
  • @MatteoPacini 我可以快速获得一个示例,它会导致睡眠仅在隐藏后发生吗?
  • @Ben_hawk 使用sleep() 是一种非常糟糕的做法,尤其是在主线程上。你到底想达到什么目的?

标签: ios objective-c xcode swift xcode6


【解决方案1】:

cmets 引导我找到这个异步工作的解决方案,因此不会阻塞导致隐藏操作暂停的主线程。

@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);
    })



}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多