2016-11-22 3 views
0

Я разрабатываю приложение с помощью Swift 2. В моем приложении я разбираю данные JSON в виде таблицы. Когда я нажимаю на ячейку, она успешно переходит к другому контроллеру представления, но я не могу получить данные json.Работа с ячейкой на tableview с использованием swift 2

Это код, на мой взгляд контроллера:

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) 

} 

При нажатии на ячейку он помогает перейти к другому контроллеру SecondController

Просмотреть в SecondController У меня есть два UILabel с. На этих ярлыках я хочу показать данные i.e strbookdetail и strdrop

Как передать ссылку между двумя контроллерами представления?

+0

[Тема] (HTTP: // StackOverflow. com/documentation/ios/434/pass-data-between-view-controllers # t = 201611220747564284945), в документации может помочь вам – FelixSFD

+0

, вы нажимаете VC успешно, b ut, вы не написали код для передачи данных –

+0

У меня есть соединения через раскадровку, все работает отлично, но в моем представлении таблицы есть ячейка. Каждая ячейка имеет разные данные, поэтому, если я нажимаю на определенную ячейку, она должна извлекать данные в соответствии с их cell –

ответ

0

Это легко сделать с помощью property передачи данных:

В 2th 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"] 


} 

В 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

am Создал розетку для ящика с меткой во втором контроллере ... как я могу ссылаться на нее в моем втором режиме просмотра viewdidload –

+0

Не устанавливайте ярлык непосредственно с первого контроллера представления, передает данные и использует это в функции, такой как 'viewWillAppear', для обновления меток. Я также предлагаю вам создать Struct для хранения ваших проанализированных данных JSON вместо индексации в словаре все время. Также вы должны использовать 'String', а не' NSString' – Paulw11

+0

@raj kumar см. Мой EDITED ответ! – aircraft

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