将数据传递到 Swift 中的容器视图?

Pass data to the Container View in Swift?

我在 VC 中使用 table 视图和容器视图。现在我想将选定的 indexPath.row 发送到我的容器视图。我试图在 Prepareforsegue 的帮助下实现这一目标。但它不起作用。

我认为 table 视图和容器视图会同时加载。这样数据就传不过去了。如有错误请指正

我需要实现下面的布局。

如果从 table 单元格中选择了电影,则必须在播放器中播放视频。

提前致谢!

VC PlayerController is the Container view

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        var PlayerScene = segue.destinationViewController as! PlayerController

        if let indexPath = self.LessonTable.indexPathForSelectedRow() {
            let selectedLesson = LessonArray[indexPath.row]
            PlayerScene.selectedDir = Dir[indexPath.row]
            println(Dir[indexPath.row])
            PlayerScene.selectedPath = Path[indexPath.row]
        }
    }

玩家控制器

class PlayerController: AVPlayerViewController {


    var selectedDir :String!
    var selectedPath :String!
    var url:NSURL?

    override func viewDidLoad() {
        super.viewDidLoad()

url  = NSURL(string: "http://www.wine.com/\(selectedDir!)/android/high/\(selectedPath!)")!

        let playerItem = AVPlayerItem(URL: url)
        player = AVPlayer(playerItem: playerItem)
        player.play()
    }

对于这种情况,您应该使用 NSNotificationCenter,因为您需要多次向 PlayerController 发送数据。

Class一个(PlayerController.h)

 //Add Observer in init method
 NSNotificationCenter.defaultCenter().addObserver(self, selector: "handler:", name: "MyNotification", object: nil)

//Handler
func handler(notif: NSNotification) {
    println("MyNotification was handled");
    println("userInfo: \(notif.userInfo)");
    println("SelectedCellIndex \(notif.userInfo!["selectedCellIndex"])"); //Validate userInfo here. it could be nil

}

ClassB

// Call from any method
NSNotificationCenter.defaultCenter().postNotificationName("MyNotification", object: nil, userInfo: ["selectedCellIndex" : indexPath.row]); // sender data in userInfo as per your requirements    

您可以使用三种方式将选定的索引或信息从一个class传递到另一个class

  1. Properties :- 在 PlayerController 中为选定的 indexPath 创建一个 属性,然后在 prepareForSegue 方法中使用 PlayerScene 对象分配 属性 .

  2. Notification :- 您可以使用 NSNotificationCenter 传递字典并在 NSNotificationCenter 处理程序方法中获取该字典。

  3. 方法调用 :- 在 PlayerController class 中创建方法并在 prepareForSegue 方法中使用 PlayerScene 对象调用该方法。