无法远离行动按钮

时间:2015-12-16 03:20:01

标签: ios swift uitableview swift2

我有一个表格视图列出了一堆孩子。当用户在该行上滑动时,会显示三个操作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)

以下是segue远离传递数据的操作(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工作正常,没问题。第二个segue 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,但没有成功。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

正如错误所说,你的问题就在于这一行,

var $char = $('.select').val();
$(".select select").change(function() {
  $char = $(this).val();
  if ($char != '1') { //check if default option has been selected
    var link = $('.link a'); //get the reference to link
    linkhref = link.attr('href').split('?')[0]; //split its actual href and store it
    link.attr('href', linkhref + '?param' + $char); //change href with attr by combining actual href and param
    alert(link.attr('href'));
  } else
    alert('Please select an option'); //alert it its default option
});

您正在传递<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="select"> <select name="scroll"> <option value="1">----- options -----</option> <option value="2">A</option> <option value="3">B</option> <option value="4">C</option> <option value="5">D</option> <option value="6">E</option> </select> </div> <div class="link"> <a href="http://www.example.com"> link </a> </div>,这是一个视图控制器,而不是您尝试强制解包的self.performSegueWithIdentifier("childrenToAttendance", sender: self)

这里最简单的事情可能是传递表视图单元格:

self