初始化时传递字符串 ViewController

Passing a string when initialising ViewController

我正在初始化一个 ViewController,它应该是一个视频播放器视图控制器,问题是我在创建它时需要传递一个 videoUrl 字符串。

有了这个字符串,我实际上会创建一个 AVPlayer 并播放假定的视频。

我几乎不知道初始化 viewController 时如何传递字符串。

玩家代码在这里:

 let player = AVPlayer(URL: url)
let playerController = AVPlayerViewController()

playerController.player = player
self.addChildViewController(playerController)
self.view.addSubview(playerController.view)
playerController.view.frame = self.view.frame

player.play()  

这是你可以做到的方法

class YourViewController: UIViewController {
 init(_ string: String) {
        super.init(nibName: nil, bundle: nil)
        // use this string 
    }

    required init?(coder: NSCoder) {
    super.init(coder: coder)
   }
}

这取决于您如何创建 ViewController 实例。

1. 如果您正在使用 storyboard,那么您可以创建一个 存储的 属性ViewController 中并在创建实例时对其进行初始化。

class VideoViewController: UIViewController {
    var videoUrl: String?
}

现在,在创建 VideoViewController 实例时,

if let vc = self.storyboard?.instantiateViewController(identifier: "VideoViewController") as? VideoViewController {
    vc.videoUrl = "YOUR_VIDEO_URL"
}

2. 如果您不使用 storyboard 并以编程方式创建 ViewController,请将 videoUrl 传递到 init(videoUrl:)

class VideoViewController: UIViewController {
    init(videoUrl: String?) {
        super.init(nibName: nil, bundle: nil)
        //save or use videoUrl here...
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

现在,在创建 VideoViewController 实例时,

let vc = VideoViewController(videoUrl: "YOUR_VIDEO_URL")