【问题标题】:Passing a string when initialising ViewController初始化 ViewController 时传递一个字符串
【发布时间】:2020-11-06 17:55:26
【问题描述】:

我正在初始化一个应该是视频播放器视图控制器的 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()  

【问题讨论】:

  • 目前如何初始化包含这段代码的视图控制器?

标签: ios swift xcode uiviewcontroller avfoundation


【解决方案1】:

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

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

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")

【讨论】:

    【解决方案2】:

    你可以这样做

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 2020-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多