初始化时传递字符串 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")
我正在初始化一个 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")