2016-10-25 3 views
0

Firebase 데이터베이스의 3 가지 변수가있는 테이블 뷰 컨트롤러가 있습니다. 이 데이터를 세부보기 컨트롤러에 전달하고 싶습니다. 지금은 TableVC에서 Details VC로 전달 된 "title"(label1) 만 있습니다.Swift : TableViewController의 데이터를 Details 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

전체'message'를'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() 

} 
} 
관련 문제