我有一个表视图,其中列出了一堆孩子。当用户在行上滑动时,会出现三个操作,分别为ArrivedDepartedAttendanceArrivedDeparted正常工作,没有问题。当用户点击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,例如nilAnyObject,但没有成功。

任何帮助将非常感激!

最佳答案

正如错误所言,您的问题是在这一行中,

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/

10-09 14:14