2016-01-11 4 views
0

Я пытаюсь передать значения из вида tableview в некоторый подробный вид, используя «performSegueWithIdentifier». Страница подробностей работает хорошо, но значения не отображаются на экране. Если я щелкнул по первому параметру tableview, содержимое страницы подробных данных пустое. Если я нажму во втором элементе, первый загрузится на странице подробностей.TableView and Detail Segue

Мой TableView код:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    let object = objectAtIndexPath(indexPath) 
    self.titulo = object!.objectForKey("titulo") as! String 
    self.sub_titulo = object!.objectForKey("sub_titulo") as! String 
    self.url = object!.objectForKey("url") as! String 
    self.tipo = object!.objectForKey("tipo") as! Int 
    //Chama a segue 
    self.performSegueWithIdentifier("detailSegue", sender: self) 
} 

//In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let svc = segue.destinationViewController as! DetailViewController 
    svc.titulo = self.titulo 
    svc.sub_titulo = self.sub_titulo 
    svc.url = self.url 
    svc.tipo = self.tipo 
} 

Мой DetailView контроллер:

import UIKit 

class DetailViewController: UIViewController { 
    @IBOutlet weak var imagemDestaque: UIImageView! 
    @IBOutlet weak var tituloLabel: UILabel! 
    @IBOutlet weak var conteudoLabel: UILabel! 

    var titulo = String() 
    var sub_titulo = String() 
    var tipo = Int() 
    var url = String() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view.s 
     print(self.titulo) 
     tituloLabel.text = self.titulo 
     conteudoLabel.text = self.sub_titulo 
    } 
    } 

ответ

0

Изменить код так:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    //Chama a segue 
    self.performSegueWithIdentifier("detailSegue", sender: self) 
} 

//In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let svc = segue.destinationViewController as! DetailViewController 

    let indexPath = tableView.indexPathForSelectedRow() 
    let object = objectAtIndexPath(indexPath) 

    svc.titulo = object!.objectForKey("titulo") as! String 
    svc.sub_titulo = object!.objectForKey("sub_titulo") as! String 
    svc.url = object!.objectForKey("url") as! String 
    svc.tipo = object!.objectForKey("tipo") as! Int 
} 
+0

Я попробовал этот код, но проблема та же. =/Если я щелкнул по первому параметру tableview, содержимое страницы подробностей пустое. Если я щелкнул по второму элементу, они загрузили первую загрузку на странице подробных сведений, указав правильный. – Lavorato

+0

Вы отлаживали 'prepareForSegue', поставили точку останова и сделали шаг по коду – meda

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