我有一个表视图,其中列出了一堆孩子。当用户在行上滑动时,会出现三个操作,分别为Arrived
,Departed
,Attendance
。 Arrived
和Departed
正常工作,没有问题。当用户点击Attendance
时,我想离开表格视图,并将该indexPath
中的数据传递给另一个表格视图(以显示儿童的出勤历史记录)。
这是attendance
操作的代码
let attendance = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Attendance", handler: { (action, indexPath) -> Void in
tableView.setEditing(false, animated: true)
self.performSegueWithIdentifier("childrenToAttendance", sender: self)
这是远离传递数据的动作的代码(childID)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "childrenToChild" {
let singleChildViewController = segue.destinationViewController as! SingleChildViewController
if let indexPath = tableView.indexPathForCell(sender as! UITableViewCell) {
singleChildViewController.childID = childID[indexPath.row]
}
}
if segue.identifier == "childrenToAttendance" {
let attendanceViewController = segue.destinationViewController as! ChildAttendanceTableViewController
if let indexPath = tableView.indexPathForCell(sender as! UITableViewCell) {
attendanceViewController.passedChildID = childID[indexPath.row]
}
}
}
第一个segue
childrenToChild
正常运行,没有问题。第二个问题childrenToAttendance
是问题所在。该应用程序可以构建并正常运行,但是当我点击Attendance
时,出现以下错误。Could not cast value of type '<<app name>>.ChildrenTableViewController' (0x1074a8400) to 'UITableViewCell' (0x109ea9128).
错误出现在
if let indexPath = tableView.indexPathForCell(sender as! UITableViewCell)
行上segue从起点
tableview
连接到目的地tableview
,不能从起点tableviewcell
出发,因为已经被使用了。我试图将其连接到牢房,但是这删除了我的其他segue(不能从一个牢房导航到两个segue)。我也尝试过在
sender
行中切换performSegueWithIdentifier
,例如nil
,AnyObject
,但没有成功。任何帮助将非常感激!
最佳答案
正如错误所言,您的问题是在这一行中,
self.performSegueWithIdentifier("childrenToAttendance", sender: self)
您正在传递
self
,这是一个视图控制器,而不是您要强制展开的UITableViewCell
。可能最简单的方法是传递表视图单元格:
let cell = tableView.cellForRowAtIndexPath(indexPath)
self.performSegueWithIdentifier("childrenToAttendance", sender: cell)
关于ios - 无法从行 Action 按钮隔离,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34303395/