gpt4 book ai didi

ios - 尝试使用 performSegue 时应用程序崩溃(withIdentifier : , 发件人:)

转载 作者:可可西里 更新时间:2023-11-01 00:39:45 25 4
gpt4 key购买 nike

如果我的应用程序是通过 Firebase 发送的通知打开的,我目前正在尝试立即对新的 ViewController 执行 segue。

我正在尝试使用代码 self.performSegue(withIdentifier: "testSegue", sender: nil) 执行转场,其中“testSegue”是我的 Storyboard中转场的标识符从 ViewController 到 SecondViewController(不同的类)。

问题是这条线导致我的应用程序崩溃,由于我是从通知启动应用程序,而不是从 Xcode 启动应用程序,因此我无法轻松调试它。

我还通过添加一个计时器来延迟代码,该计时器在 5 秒后运行该行,以确定发生崩溃时它在该行,并且还尝试使用 present(viewControllerToPresent: ...)

如果有人能指出发生崩溃的原因,或者在这种情况下如何调试错误,或者让它自动进入我需要的 ViewController 的任何替代方法,那就太好了,谢谢。

AppDelegate.swift 中的一些附加代码:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

print(userInfo)

let url = userInfo["url"]

print("url is: \(String(describing: url))")

if url != nil {

vc.defaults.set("\(String(describing: url))", forKey: "urlDef")

vc.defaults.set(true, forKey: "hasRun")

initialVC.testingFunc()

print("Func done")

}

completionHandler(UIBackgroundFetchResult.newData)

print("Func finished")
}

ViewController.swift 中的一些附加代码

var funcTimer = Timer()

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

}

func testingFunc() {

funcTimer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.triggerSegue), userInfo: nil, repeats: false)
print("The timer has begun")

}

func triggerSegue() {

print("Trigger segue func has begun")
self.performSegue(withIdentifier: "testSegue", sender: nil)

}

My segue in the Storyboard

最佳答案

在呈现 viewController 时切换到主线程。

func triggerSegue() {
DispatchQueue.main.async {
self.performSegue(withIdentifier: "testSegue", sender: nil)
}
}

关于ios - 尝试使用 performSegue 时应用程序崩溃(withIdentifier : , 发件人:),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46051061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com