2014-10-28 20 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