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

标签 ios swift progress-bar

我有一个 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/

相关文章:

ios - 导入数据后如何重新加载UITableView?

javascript - AngularJs 更新 Bootstrap 进度条

python - 运行过程中进度条不更新

linux - 如何在备份脚本中实现进度条

ios - AWS Cognito iOS 开发人员身份验证

ios - iOS:如何从Dropbox同步上的mp3文件中获取ID3标签

ios - UIView 不会出现在模拟器中

ios - Kingfisher 将数据缓存在 RAM 中

ios - 即使在 iphone 中清除缓存后仍将保留的变量值

ios - 如何使用 UIImagePickerController 相机图像来更新我的 UICollectionViewCell?