2015-03-15 5 views
0

Как передать тот же текст из таблицыVC в таблицу detailVC, используя массив, заполненный в tableVC.Swift: передать TableViewCell текст в новую ячейку ViewController

Он работает в tableVC, но данные не передаются в detailVC.

Они делят один tableviewcell.

class TableViewCell: UITableViewCell { 
    @IBOutlet var img: UIImageView! 
    @IBOutlet var title: UILabel! 
} 

tableVC

class TableViewController: UITableViewController { 

var thecourseName = [String]()  

override func viewDidLoad() { 
    super.viewDidLoad() 

thecourseName = ["course 1 ","course 2 ","course 3 "] 
theimg = [UIImage(named: "109.png")!,UIImage(named: "110.png")!] 

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

// Configure the cell... 

cell.title.text = thecourseName[indexPath.row] 
return cell 
} 


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue == "toInfo") { 
     var text = self.tableView.indexPathForSelectedRow() 
    var detailsVC: DetalisTableViewController = segue.destinationViewController as! DetalisTableViewController 
    detailsVC.courseName = thecourseName 

    } 
} 

detailVC

import UIKit 

class DetalisTableViewController: UITableViewController { 

    var courseName = [String]() 

@IBOutlet var passedCourse: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 


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

    // Configure the cell... 

    cell.title.text = courseName[indexPath.row] 

    return cell 
} 

StoryBoard http://s18.postimg.org/mwkw5hf1l/image.png

ответ

1

Ваш вопрос в том, что вы не передаете информацию на ваш detailViewController о содержании выбранного клетка. Сделайте это вместо того, чтобы:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if (segue.identifier == "toInfo") { 
     if let indexPath = tableView.indexPathForCell(sender as! UITableViewCell) { 
      var detailsVC = segue.destinationViewController as! DetalisTableViewController 
      println(thecourseName[indexPath.row]) 
      println(indexPath.row) 
      detailsVC.courseName = thecourseName[indexPath.row] 
     } 
    } 
} 

Теперь вместо передачи всего массива имен, конечно, чтобы DetailsTableViewController, ваши переменной courseName содержит только один:

var courseName: String = "" 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableViewCell 
    cell.title.text = courseName 
    return cell 
} 
+0

cell.title.text = courseName> exc_bad_instruction ошибки (код = exc_i386_invop, subcode = 0x0) error –

+0

Это интересно. Лучше убедитесь, что вы правильно связали свой IBOutlet. Попробуйте снова запустить с помощью 'println (cell.title)' above' cell.title.text ... ' – kellanburket

+0

https://www.dropbox.com/s/bq7c5ut82cn416w/tableview%20testing.zip?dl=0 –

Смежные вопросы