所以我有一个表视图和一个自定义VC。
然后我有detailImage
作为属性的对象练习。
如何从表格行操作中indexPath.row
获取prepareForSegue
函数?
这会返回nil
:self.tableView.indexPathForSelectedRow
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "detailsSegue" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let destinationController = segue.destinationViewController as! DetailViewController
print(self.exercises[indexPath.row].image)
destinationController.detailImage = self.exercises[indexPath.row].image
print ("send")
}
}
}
答案 0 :(得分:1)
而不是代码中的这个:
if let indexPath = self.tableView.indexPathForSelectedRow {
试试这个:
if let indexPath = self.tableView.indexPathForSelectedRow() {
答案 1 :(得分:0)
在editActionsForRowAtIndexPath
中使用发件人对象后
我得到了它的工作。它可能是一个肮脏的解决方案,但它的工作原理。
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
let detailsAction = UITableViewRowAction(style: .Default, title: "Details", handler: {(action:UITableViewRowAction!, indexPath:NSIndexPath!) -> Void in
self.performSegueWithIdentifier("detailsSegue", sender: indexPath) //sender is the indexPath
}
)
然后在prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "detailsSegue" {
let indexPath = sender!
let destinationController = segue.destinationViewController as! DetailViewController
print(self.exercises[indexPath.row].image)
可能有更好的方法......有人发表评论吗?