Как получить уведомление в SwiftUI при завершении UIKit UIViewController viewDidLoad - PullRequest
0 голосов
/ 11 июля 2020

У меня UIViewController отлично работает в SwiftUI с приведенным ниже кодом.

import Foundation
import SwiftUI

final class RTCVideoViewController: UIViewController {
  
  var previewView: RTCEAGLVideoView!
  var videoTrack: RTCVideoTrack!
  
  override func viewDidLoad() {
    
    previewView = RTCEAGLVideoView(frame: CGRect(x:0, y:0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height))
    previewView.contentMode = UIView.ContentMode.scaleAspectFit
    view.addSubview(previewView)
    
    do {
      videoTrack = try MediaCapturer.shared.createVideoTrack(videoView: previewView)
    } catch {
      print(error)
    }
  }
}

extension RTCVideoViewController : UIViewControllerRepresentable{
  public typealias UIViewControllerType = RTCVideoViewController
  
  public func makeUIViewController(context: UIViewControllerRepresentableContext<RTCVideoViewController>) -> RTCVideoViewController {
    return RTCVideoViewController()
  }
  
  public func updateUIViewController(_ uiViewController: RTCVideoViewController, context: UIViewControllerRepresentableContext<RTCVideoViewController>) {
  }
}

В представлении SwiftUI.

import Combine
import SwiftUI

struct LiveView: View {
  
  @ObservedObject var viewModel: LiveViewModel
  
  init(viewModel: LiveViewModel) {
    self.viewModel = viewModel
  }
  
  var body: some View {
    return ZStack {
      RTCVideoViewController()
        .edgesIgnoringSafeArea(.top)
    }
  }
}

Пока все работает нормально, но мне нужно RTCVideoTrack при создании, чтобы передать его LiveViewModel.

Любые идеи, какой шаблон я мог бы реализовать, чтобы получать уведомления, когда viewDidLoad завершен или RTCVideoTrack передан LiveViewModel?

1 Ответ

0 голосов
/ 12 июля 2020
• 1000
...