如何在UITableViewCell的@IBAction函数中推送ViewController

时间:2016-07-17 01:39:18

标签: swift uitableview

我有一个UITableViewControllerUITableViewCell以及Cell的XIB文件。

我的问题是如何从单元格中推送UIViewController

在UITableViewCell中

 @IBAction func pushBtnTapped(sender: AnyObject) {
        // navigate to post view controller
        let guest = self.storyboard?.instantiateViewControllerWithIdentifier("GuestCollectionVC") as! GuestCollectionVC
        self.navigationController?.pushViewController(guest, animated: true)
}

我收到了一条错误消息。 self.storyboard不是UITableCell的成员。

  • 我知道还有另一种方法可以实现这一点。但我必须在TableViewCell中实现。

1 个答案:

答案 0 :(得分:1)

理想情况下,您可以在didSelectRowAtIndexPath方法调用中从表视图控制器中进行推送。为什么你说你必须在单元格中实现它?还有其他方法可以做到这一点,但从你所说的这可能是最好的镜头......

self.performSegueWithIdentifier("YourSegueId", sender: nil)

然后在prepareForSegue

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

//get the index path of the selected row
let indexPath = self.tableView.indexPathForSelectedRow

//just an example if you want to pass something to the other vc
let item = self.responseItems[indexPath!.row]

if segue.identifier == "YourSegueId" {

        YourVC = segue.destinationViewController as! YourVC

        YourVC.item = item
}
}

如果你想从按钮做到这一点你可以在prepareForSegue方法中做这样的事情......现在你有了按钮及其索引路径

  let button = sender as! UIButton
  let view = button.superview
  let cell = view?.superview as! YourCell
  let indexPath = tableView.indexPathForCell(cell)