如何使用swift 2.0中的prepareForSegue将数据从PFTableViewCell传递到下一个ViewController?

时间:2015-10-29 00:39:40

标签: ios swift parse-platform pftableviewcell

我正在尝试将数据从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 个答案:

答案 0 :(得分:0)

好的,如果你使用的是PFQueryTableViewController,试试这个:

1)从PFQueryTableViewController(不是从单元格,从视图控制器)到要传输数据的视图控制器创建手动segue。在界面构建器的“检查器”面板中,将其命名为“#ManualSegue"

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)现在,在你的prepareForSegue中:

 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

   }