2014-10-28 23 views
1

我有一个UITableViewController其提供字符串作为数据源的数组:将模型发布到委托视图的正确方法?

import UIKit 

class ItemsViewController: UITableViewController { 

    let items = [ 
     "Bob", 
     "Joe", 
    ] 

    @IBAction 
    func unwindToSegue(segue: UIStoryboardSegue) { 

    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return items.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Item", forIndexPath: indexPath) as UITableViewCell 

     cell.textLabel.text = items[indexPath.row] 

     return cell 
    } 

} 

我现在添加了第二个场景与UIViewController当用户通过一个节目赛格瑞点击一个UITableCell被激活。

我现在想借与前UITableCell分配和插入ItemViewController字符串:

import UIKit 

class ItemViewController: UIViewController { 

    @IBOutlet 
    weak var nameLabel: UILabel! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

    override func override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     //var name = segue.someMethodHowIGetTheDataAssignedToTableCell 
     //nameLabel.text = name 
    } 

} 

我如何通过模型(在这种情况下,字符串)以上分配给单个的TableCell新的ItemViewController

+0

您的prepareForSegue实现应该位于表视图控制器中,而不是ItemViewController。 – rdelmar 2014-10-28 23:21:08

回答

1

像这样。只需将ItemViewController的返回推继续添加到ItemsViewController。将它们命名为未来类似:-)

import UIKit 

class ItemsViewController: UITableViewController { 

    let items = [ 
     "Bob", 
     "Joe", 
    ] 

    @IBAction 
    func unwindToSegue(segue: UIStoryboardSegue) { 

    } 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return items.count 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("Item", forIndexPath: indexPath) as UITableViewCell 

     cell.textLabel.text = items[indexPath.row] 

     return cell 
    } 

//Passing details to detail VC 
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

      let indexPath = self.tableView.indexPathForSelectedRow() 
      let theDestination = (segue.destinationViewController as ItemViewController) 
      theDestination.itemName = items[indexPath!.row] 
    } 

} 

import UIKit 

class ItemViewController: UIViewController { 

    @IBOutlet weak var nameLabel: UILabel! 

var itemName = "" 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     nameLabel.text = itemName 
    } 

} 
+0

我认为OP只是要求将数据传递给细节控制器。 – rdelmar 2014-10-28 23:16:12

+0

当然,我给了他,加上完整的即插即用代码。我测试了它,它将他想要的值传递给细节控制器。 – 2014-10-28 23:18:40