【发布时间】:2026-01-14 20:50:01
【问题描述】:
我希望在应用加载一段时间后从主视图控制器自动切换到第二个视图控制器。
我该怎么做?
我需要以编程方式进行吗?
【问题讨论】:
我希望在应用加载一段时间后从主视图控制器自动切换到第二个视图控制器。
我该怎么做?
我需要以编程方式进行吗?
【问题讨论】:
你可以使用这个sn-p的代码:
let delay = 1 // Seconds
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay * NSEC_PER_SEC)), dispatch_get_main_queue()) {
self.launchMainUI()
return
}
在delay 秒后执行launchMainUI 方法。将其替换为您自己的实现,在其中实例化您的视图控制器并呈现它,或者只是调用一个 segue。
【讨论】:
如果您的 UI 布局在 Storyboard 中,您可以在第一个 ViewController 的 viewDidLoad 中设置一个 NSTimer,然后在计时器触发时调用 performSegueWIthIdentifier:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let timer = Timer.scheduledTimer(interval: 8.0, target: self, selector: #selector(timeToMoveOn), userInfo: nil, repeats: false)
}
@objc func timeToMoveOn() {
self.performSegue(withIdentifier: "goToMainUI", sender: self)
}
这是在情节提要中设置转场的方法:
ViewController 的文件所有者图标拖动到第二个ViewController。【讨论】:
在你的行动中你必须像这个例子那样写
self.performSegueWithIdentifier("segue 名称", sender: self)
在你必须实现这个方法之后
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
if(segue.identifier == "name of segue")
{
var view : yourviewcontroller = segue.destinationViewController as yourviewcontroller
}
}
【讨论】:
斯威夫特 4:
let timer = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(segueToSignIn), userInfo: nil, repeats: false)
@objc func segueToSignIn() {
self.performSegue(withIdentifier: "SignInSegue", sender: self)
}
【讨论】: