2015-09-07 59 views
3

我正在使用表视图&在VC中的Container视图。现在我想将选定的indexPath.row发送到我的容器视图。我试图在Prepareforsegue的帮助下实现这一点。但它不起作用。将数据传递给Swift中的容器视图?

我认为这两个表视图& Container视图同时加载。所以数据不通过。如果我错了,请纠正我。

我需要实现下面的布局。

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

在此先感谢!

Current UI

VCPlayerController 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] 
     } 
    } 

的PlayerController

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() 
    } 

回答

0

可以使用方式从一类通过选择索引或信息到另一类

  1. 属性: - 在PlayerController中为选定的索引路径创建一个属性&然后在prepareForSegue方法中使用PlayerScene对象分配该属性。

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

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

0

对于这种情况,你应该使用NSNotificationCenter,因为你将需要的数据多次发送给您的PlayerCon troller。

A类(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 

} 

B类

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