gpt4 book ai didi

ios - 从不是 viewController 的 swift 文件更新时进度条崩溃

转载 作者:行者123 更新时间:2023-11-30 13:17:52 24 4
gpt4 key购买 nike

我有一个 Swift 文件,其中包含我的所有查询。当使用 saveOperation.perRecordProgressBlock 保存记录时,此文件调用 ChatView View Controller 并更新 ProgressBarUpdate 函数。

到目前为止,我可以在 progressBarUpdate 中进行打印,以很好地打印进度。但是当我更新progressBarMessage.setProgress(value!,animated: true)时,应用程序崩溃并出现以下错误: fatal error :在展开可选值时意外发现nil

如果我尝试通过 viewDidLoad 运行 progressBarMessage.setProgress(value!,animated: true) ,它会很好地更新进度栏,没有错误。这意味着 socket 工作正常。

要考虑的另一件事是我的 print(".... perRecordProgressBlock - CHAT VIEW\(value)") 工作得很好。如果从 Queris.swift 获取更新。只是 ProgressBarUpdate 导致了问题。

@我的 Queries.swift 文件选项 1

 saveOperation.perRecordProgressBlock = { (recordID, progress) -> Void in
print("... perRecordProgressBlock \(Float(progress))")
var chatView = ChatView()
chatView.progressBarUpdate(Float(progress))
}

@我的 Queries.swift 文件选项 2

 saveOperation.perRecordProgressBlock = { (recordID, progress) -> Void in
print("... perRecordProgressBlock \(Float(progress))")

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let chatViewController = storyboard.instantiateViewControllerWithIdentifier("ChatViewVC") as! ChatView
chatViewController.progressBarUpdate(Float(progress))
}

@ChatView View Controller

func progressBarUpdate(value: Float) 
{
print(".... perRecordProgressBlock - CHAT VIEW\(value)")
if (value as? Float) != nil
{
progressBarMessage.setProgress(value, animated: true)
}
}

最佳答案

实例化 viewController 的方式不正确,因此会出现崩溃/零值。仅当有东西向其发送 view 消息时,viewController 才会加载其 View 层次结构。系统将在何时将 View 层次结构放在屏幕上时自行执行此操作。它发生在诸如 prepareForSegue:sender:viewWillAppear:loadView()self.view 之类的调用之后。

所以这里你的导出仍然为零,因为它还没有加载。

只需尝试强制您的 viewController 调用 self.view,然后访问该 viewController 中的函数即可。

关于ios - 从不是 viewController 的 swift 文件更新时进度条崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38044179/

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