【发布时间】:2016-01-30 15:01:08
【问题描述】:
示例:
我在当前视图中有两个按钮,当我单击按钮时,它将在当前UINavgitionController 中推送一个UIViewController。
这是我的代码:
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.navigationController?.pushViewController(pvc, animated: true)
})
但我发现了一个错误。当我快速点击按钮时,UIViewController 按了两次,为什么会这样?
PS:现在,我已经在UIViewControllers 中多次使用此代码,超过 200 次。
【问题讨论】:
-
有了你的代码,它就会发生。
dispatch_async(dispatch_get_main_queue()不会立即执行。您可以在单击后禁用该按钮。 -
@anhtu 是对的。希望您了解异步和同步调用的概念。
-
现在当你点击它两次时,它会向你发送两次命令到队列中。与异步调用一样,它们中的每一个都会在它们运行时被调用,从而导致两次推送 VC。
-
如果你点击按钮两次,那么它将导航两次。所以你已经放置了加载程序或活动指示器,直到控件导航到屏幕...
标签: ios iphone swift uinavigationcontroller pushviewcontroller