![](/img/trans.png)
[英]viewDidLoad not called when initialising obj viewcontroller from Swift
[英]Passing a string when initialising ViewController
我正在初始化一個 ViewController,它應該是一個視頻播放器視圖 controller,問題是我在創建它時需要傳遞一個 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
,請在init(videoUrl:)
中傳遞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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.