2016-10-25 2 views
0

У меня есть контроллер табличного представления с 3 переменными из базы данных Firebase. Я хотел был бы передать эти данные к деталям View Controller. Теперь у меня есть только «title» (label1), переданный из TableVC в Details VC.Swift: Как передать данные из TableViewController в подробности VC

Как передать оставшуюся часть данных (label2 и label3) в DetailsVC?

MondayTableVC:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCellWithIdentifier("Cell_Monday") 

     let messageSnapshot: FIRDataSnapshot! = conf[indexPath.row] 
     let message = messageSnapshot.value as! Dictionary<String, String> 

     // print(message) 

     let label1 = cell?.viewWithTag(1) as! UILabel 
     label1.text = message["title"] 

     let label2 = cell?.viewWithTag(2) as! UILabel 
     label2.text = message["place"] 

     let label3 = cell?.viewWithTag(3) as! UILabel 
     label3.text = message["date"] 


     return cell! 

    } 

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 



     let messageSnapshot: FIRDataSnapshot! = conf[indexPath.row] 
     let message = messageSnapshot.value as! Dictionary<String, String> 

     let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
     let monDetails = storyBoard.instantiateViewControllerWithIdentifier("mondayDetails") as! MondayViewController 
     monDetails.title = message["title"] 


     monDetails.mondayDetailDict = message 
     self.navigationController?.pushViewController(monDetails, animated: true) 


    } 

понедельник (Подробнее) ViewController:

class MondayViewController: UIViewController { 

    var mondayDetailDict: Dictionary<String, String> = Dictionary() 


    @IBOutlet weak var label1: UILabel! 


    override func viewDidLoad() { 
     super.viewDidLoad() 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 

    } 


    } 

Может кто-то помочь решить эту проблему?

+0

создать свой собственный подкласс клеток с UILabel точек, и поместить данные в ячейки. – AleyRobotics

+0

Почему вы не отправляете все 'сообщение' в' MondayViewController'? – Adeel

+0

@Adeel Как я мог это сделать? – gryzek

ответ

0
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

     let messageSnapshot: FIRDataSnapshot! = conf[indexPath.row] 
     let message = messageSnapshot.value as! Dictionary<String, String> 

     let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 
     let monDetails = storyBoard.instantiateViewControllerWithIdentifier("mondayDetails") as! MondayViewController 
     monDetails.title = message["title"] 
     let cell = tableView.cellForRow(at: indexPath) as! CellClass 

     let label2 = cell?.viewWithTag(2) as! UILabel 
     monDetails.field2 = label2.text 

     let label3 = cell?.viewWithTag(3) as! UILabel 
     monDetails.field3 = label3.text 

     monDetails.conferenceDetailDict = message 
     self.navigationController?.pushViewController(monDetails, animated: true) 


    } 
+0

Не работает. «Клетка?» это плохое определение в Xcode 8. Этот код не может быть реализован должным образом. – gryzek

0

Фактически вы не назначаете значение label1. Изменение MondayViewController к этому:

class MondayViewController: UIViewController { 

var mondayDetailDict: Dictionary<String, String> = Dictionary() 

@IBOutlet weak var label1: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    label1.text = mondayDetailDict["place"] 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

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