2016-11-22 6 views
0

Ich bin eine App mit Swift 2 entwickeln. In meiner App analysiere ich JSON-Daten zu einer Tabellenansicht. Wenn ich auf eine Zelle tippe, bewegt sie sich erfolgreich zu einem anderen View-Controller, aber ich kann die JSON-Daten nicht abrufen.Arbeiten mit Zelle auf Tableview mit Swift 2

Dies ist der Code in meiner Ansicht-Controller:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath){ 
    var cell = self.TableView.dequeueReusableCellWithIdentifier("Cell",forIndexPath: indexPath) as! CustomTableCell 
    let strbookdetail : NSString=arrDict[indexPath.row] .valueForKey("booking_detail") as! NSString 
    let strdrop : NSString=arrDict[indexPath.row] .valueForKey("drop_address") as! NSString 
    cell.Bookdetail.text=strbookdetail as String 
    cell.Dropaddress.text=strdrop as String 
    return cell as CustomTableCell 

} 

//It helps to parse JSON data to table view. 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    TableView.deselectRowAtIndexPath(indexPath, animated: true) 
    let tripcontroller = self.storyboard?.instantiateViewControllerWithIdentifier("UpcomingController") as! Secondcontroller 
    navigationController?.pushViewController(tripcontroller, animated: true) 

} 

Wenn auf der Zell Klopfen hilft es anderen View-Controller SecondController

In meinem SecondController Ich habe zwei UILabel s zu bewegen. In diesen Etiketten möchte ich Daten zeigen, d. H. strbookdetail und strdrop

Wie kann ich einen Verweis zwischen den beiden View-Controller übergeben?

+0

[Dieses Thema] (http: // Stackoverflow. com/documentation/ios/434/Passing-Daten-zwischen-View-Controller # t = 201611220747464284945) in der Dokumentation könnte Ihnen helfen – FelixSFD

+0

sind Sie Push der VC ist erfolgreich, b ut du bist nicht den Code für die Daten –

+0

geschrieben habe ich habe Verbindungen durch Storyboard alles funktioniert gut, aber in meiner Tabellenansicht gibt es Zelle .. jede Zelle hat unterschiedliche Daten, so wenn ich auf bestimmte Zelle tippen sollte es Daten nach ihrer holen Zelle –

Antwort

0

Es ist leicht property Passdaten zu tun mit:

In 2. vc:

var dataFromBeforeVC:[String:String] = [String:String]() 

override func viewDidLoad() { 
    super.viewDidLoad() 


    initData() 

} 

func initData() { 

    // set data strbookdetail and strdrop to labelOne & labelTwo 

    labelOne.text = dataFromBeforeVC["strdrop"] 
    labelTwo.text = dataFromBeforeVC["strbookdetail"] 


} 

In 1. vc:

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

    TableView.deselectRowAtIndexPath(indexPath, animated: true) 
    let tripcontroller = self.storyboard?.instantiateViewControllerWithIdentifier("UpcomingController") as! Secondcontroller 

    let cell:UITableViewCell = tableView.cellForRow(at: indexPath as IndexPath)! 

    let strbookdetail : NSString=arrDict[indexPath.row] .valueForKey("booking_detail") as! NSString 
    let strdrop : NSString=arrDict[indexPath.row] .valueForKey("drop_address") as! NSString 
    tripcontroller.dataFromBeforeVC = [ 
     "strdrop":strbookdetail, 
     "strdrop":strbookdetail 
    ] 

    self.navigationController?.pushViewController(tripcontroller, animated: true) 
} 
+0

bin Outlet für die Label-Box im zweiten Controller erstellt ... wie gebe ich Referenz darauf in meinem zweiten Controller viewdidload Methode –

+0

Nicht festgelegt das Label direkt vom ersten View-Controller, übergeben Sie die Daten und verwenden Sie dies in einer Funktion wie 'viewWillAppear', um die Etiketten zu aktualisieren. Ich würde auch vorschlagen, dass Sie ein Struct erstellen, um Ihre geparsten JSON-Daten zu behalten, anstatt die Indizierung in ein Wörterbuch zu machen. Außerdem sollten Sie 'String' anstelle von' NSString' verwenden. – Paulw11

+0

@raj kumar siehe meine bearbeitete Antwort! – aircraft

Verwandte Themen