Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 3如何在UITableViewRowAction中引用行索引_Swift_Indexing_Tableview - Fatal编程技术网

Swift 3如何在UITableViewRowAction中引用行索引

Swift 3如何在UITableViewRowAction中引用行索引,swift,indexing,tableview,Swift,Indexing,Tableview,所以我尝试在表视图中创建一个自定义滑动,包括一个删除和一个编辑按钮。但是,我无法引用要编辑的选定单元格的行。本例中的索引为[x,y],x始终为0,表示滑动时编辑按钮的索引,而y是行索引 我如何引用行索引,换句话说,[x,y]中的y。谢谢 override func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? { let delete =

所以我尝试在表视图中创建一个自定义滑动,包括一个删除和一个编辑按钮。但是,我无法引用要编辑的选定单元格的行。本例中的索引为[x,y],x始终为0,表示滑动时编辑按钮的索引,而y是行索引

我如何引用行索引,换句话说,[x,y]中的y。谢谢

override func tableView(_ tableView: UITableView, editActionsForRowAt: IndexPath) -> [UITableViewRowAction]? {
    let delete = UITableViewRowAction(style: .normal, title: "Delete") { action, index in
        self.leaveLeaveType.remove(at: index.row)
        self.leaveStartsTime.remove(at: index.row)
        self.leaveEndsTime.remove(at: index.row)
        self.leaveHost.remove(at: index.row)
        self.leaveDest.remove(at: index.row)
        tableView.deleteRows(at: [index], with: .fade)
    }

    let edit = UITableViewRowAction(style: .normal, title: "Edit") { action, index in
        //self.performSegue(withIdentifier: "editLeaveRequest", sender: self)
        let editCell = self.tableView.cellForRow(at: index)! as! LeaveRequestTableViewCell
        self.editLeaveType = editCell.leaveLeaveType.text!
        self.editHost = editCell.leaveHost.text!
        self.editDest = editCell.leaveDest.text!

        let cellDateTime = editCell.leaveDateTime.text!
        let startsTimeStartIndex = cellDateTime.index(cellDateTime.startIndex, offsetBy: 0)
        let startsTimeEndIndex = cellDateTime.index(cellDateTime.endIndex, offsetBy: -22)
        let startsTimeRange = startsTimeStartIndex..<startsTimeEndIndex
        self.editStartsTime = cellDateTime[startsTimeRange]

        let endsTimeStartIndex = cellDateTime.index(cellDateTime.startIndex, offsetBy: 22)
        let endsTimeEndIndex = cellDateTime.index(cellDateTime.endIndex, offsetBy: 0)
        let endsTimeRange = endsTimeStartIndex..<endsTimeEndIndex
        self.editEndsTime = cellDateTime[endsTimeRange]

    }

    delete.backgroundColor = .red
    edit.backgroundColor = .lightGray

    return [delete, edit]
}
重写func tableView(tableView:UITableView,editActionsForRowAt:IndexPath)->[UITableViewRowAction]?{
让delete=UITableViewRowAction(样式:.normal,标题:“delete”){action,中的索引
self.leaveType.remove(位于:index.row)
self.leaveStartsTime.remove(位于:index.row)
self.leveEndStime.remove(位于:index.row)
self.leaveHost.remove(位于:index.row)
self.leaveDest.remove(位于:index.row)
tableView.deleteRows(位于:[索引],带:。淡入淡出)
}
let edit=UITableViewRowAction(样式:.normal,标题:“edit”){action,中的索引
//self.performsgue(标识符为:“editLeaveRequest”,发送者:self)
让editCell=self.tableView.cellForRow(at:index)!as!LeaveRequestTableViewCell
self.editLeaveType=editCell.LeaveType.text!
self.editHost=editCell.leaveHost.text!
self.editDest=editCell.leaveDest.text!
让cellDateTime=editCell.leaveDateTime.text!
让StartTimeStartIndex=cellDateTime.index(cellDateTime.startIndex,偏移量:0)
让StartTimeEndIndex=cellDateTime.index(cellDateTime.endIndex,偏移量:-22)

让StartTimeRange=StartTimeStartIndex..代码无法工作,因为缺少本地参数标签
indexPath

override func tableView(_ tableView: UITableView, 
      editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {...

这个
indexPath
包含所选单元格的节和行。

谢谢您的帮助……但是当我滑动并尝试打印indexPath时,它仍然显示类似[x,y]的内容,例如[0,0]或[0,1],0,1是行。另外,由于我有一个删除和编辑按钮,我发现它们都会产生相同的[x,y]按下时,[x,y]索引中的x代表什么?但我似乎不能让editCell=self.tableView.cellForRow(at:[IndexXPath.row])!as!LeaveRequestTableViewCellNo,
cellForRow…
需要完整的索引路径:
cellForRow(at:IndexXPath)
索引路径在闭包中被捕获。好的,我知道了。但是,当我确实单击“编辑”并进入新控制器时,索引路径仍然是错误的。