如何编程延迟?
Posted
技术标签:
【中文标题】如何编程延迟?【英文标题】:How to program delay? 【发布时间】:2018-04-19 11:09:44 【问题描述】:我有两个视图控制器。
我在第一个 VC 中制作了 imageview(在 Gif 文件中)。 5 秒后,我希望将页面传递给第二个 vc。第一个VC代码是这样的:
class LemonVC: UIViewController
@IBOutlet weak var LemonGif: UIImageView!
override func viewDidLoad()
super.viewDidLoad()
LemonGif.loadGif(name: "sufoo")
// DispatchQueue.main.asyncAfter(deadline: .now() +
.seconds(4), execute:
//
// )
// Do any additional setup after loading the view.
第一个 VC 名称是 LemonVC
第二个 VC 名称是 SecondVC
【问题讨论】:
我可能不会在viewDidLoad
开始,但可以考虑viewDidAppear
作为初学者
我认为您正在寻找的另一个命令是 performSegue
...假设您实际上在视图控制器之间命名了 segue
【参考方案1】:
一种可能性是在第一个和第二个控制器之间使用 segue 来定义导航路径(从第一个控制器中的“黄色”点拖动到第二个控制器上。本示例使用 show
类型)
确保你给它一个标识符名称,你的代码中需要这个。
我可能会使用viewDidAppear
而不是viewDidLoad
,至少这意味着视图已经过渡到屏幕。
然后,你需要做的就是使用UIViewController#performSegue
执行segue,这将呈现下一个控制器
override func viewDidAppear(_ animated: Bool)
super.viewDidAppear(animated)
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5), execute:
self.performSegue(withIdentifier: "skipTo", sender: self)
)
【讨论】:
很高兴它可以提供帮助 - 请记住,给猫剥皮的方法总是不止一种 - 这只是做你想做的事情的一种方法;)【参考方案2】:试试这个:
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(5), execute:
// go some where
// example
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let introRootVC = storyBoard.instantiateInitialViewController() // it's main controller, if you want to another create Story board ID
self.present(introRootVC!, animated: true, completion: nil)
)
您可以更改延迟,seconds(5)
【讨论】:
以上是关于如何编程延迟?的主要内容,如果未能解决你的问题,请参考以下文章