Как передать данные из PFTableViewCell в следующий ViewController с использованием prepareForSegue в swift 2.0?

Я пытаюсь передать данные из PFTableViewCell в мой следующий контроллер представления (подробности), но я все еще не могу увидеть данные. Я думаю, что написал мой код правильно для Swift 2.0/Xcode 7. Я застрял на этом около 2 недель, и я совсем не разбираюсь в кодировании. Есть ли какой-либо другой код, который может передавать данные другому viewcontroller?

В моем FirstViewController у меня есть этот код написан:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)  {
        if segue.identifier == "Detail" {
            if let destination = segue.destinationViewController as? DetailsViewController
            , path = tableView?.indexPathForSelectedRow
            , cell = tableView?.cellForRowAtIndexPath( path ) as? Post
        {
            destination.name = cell.name.text ?? "nil"
            destination.message = cell.message.text ?? "nil"
        }

и в моем DetailsViewController у меня есть это написано:

    var name: String?
var message: String?

@IBOutlet weak var userName: UILabel?
@IBOutlet weak var userMessage: UILabel?

override func viewDidLoad() 
{
    super.viewDidLoad()
    userName?.text = name ?? "nil"
    userMessage?.text = message ?? "nil"
}

1 ответ

Решение

Хорошо, если вы используете PFQueryTableViewController, попробуйте это:

1) создайте ручной переход из PFQueryTableViewController (НЕ из ячейки, из контроллера представления) в контроллер представления, в который вы хотите передать данные. На панели инспектора в конструкторе интерфейса назовите его "yourManualSegue"

2) в верхней части вашего класса (pFQueryTableViewController) создайте 2 переменные:

  var nameToPass = String()
  var messageToPass = String()

3) вызвать метод didSelectRowAtIndexPath, например, так:

  func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
       let object = objectAtIndexPath(indexPath)
       self.nameToPass = object!.objectForKey("keyThatholdsNameHere") as! String
       self.messageToPass = object!.objectForKey("keyForMessageHere") as! String

  self.performSegueWithIdentifier("yourManualSegue", sender: self)


}

4) Теперь, в вашей подготовке ForSegue:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)  {
if segue.identifier == "Detail" {
     let destination = segue.destinationViewController as? DetailsViewController
    destination.name = self.nameToPass
    destination.message = self.messageToPass

   }
Другие вопросы по тегам