从TableView打印单元格文本到新的viewController UILabel(swift)

时间:2016-03-19 19:19:04

标签: swift

所以我的目标是选择单元格以获取单元格内的textLabel并将其打印在新的ViewControllers UILabel中。

我已经将它设置为选择单元格的位置,然后将其推送到新的View Controller。我无法弄清楚如何让它将单元格textLabel打印到新的ViewController的UILabel中。

这是我的TableView代码,但我应该写什么来检索单元格textLabel到我的新ViewController中?

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

    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell

    let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("showPostContent") as! showPostContent

    print(currentCell.textLabel?.text)

    self.navigationController?.pushViewController(secondViewController, animated: true)

}

1 个答案:

答案 0 :(得分:2)

到目前为止,我可以在您的问题中看到您尝试将数据从一个控制器传递到另一个控制器。在您的情况下,您可以在点按单元格时使用didSelectRowAtIndexPath方法,只需将值设置为UILabel中的secondViewController,或者您可以为单元格设置推送segue到下一个控制器并在prepareForSegue传递您需要的数据。

  

案例1:

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

   let currentCell = tableView.cellForRowAtIndexPath(indexPath)! as UITableViewCell
   let secondViewController = self.storyboard?.instantiateViewControllerWithIdentifier("showPostContent") as! showPostContent
   // this line call the loadView method to avoid the IBOutlet is not nil
   let _ = secondViewController.view

   // pass the data
   secondViewController.NameOfYourUILabelOutlet.text = currentCell.textLabel?.text

   print(currentCell.textLabel?.text)
   self.navigationController?.pushViewController(secondViewController, animated: true)
}
  

案例2:

在故事板中设置segue后:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    let destinationViewController = segue.destinationViewController as! NameOfYourViewController
    let _ = destinationViewController.view

    guard let indexPath = self.tableView.indexPathForSelectedRow else { return }

    let indexOfCellSelected = indexPath.row
    let cell = self.tableView.cellForRowAtIndexPath(indexPath)

    destinationViewController.NameOfYourUILabelOutlet.text = cell.NameOfYourUILabelOutlet.text
}

如果您不想调用view属性来实例化@IBOulet,您可以创建一个属性设置它的值,然后在viewDidLoad设置其中@IBOulet的值。

我希望这对你有所帮助。