所以我的目标是选择单元格以获取单元格内的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)
}
答案 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
的值。
我希望这对你有所帮助。