我有一个表格视图列出了一堆孩子。当用户在该行上滑动时,会显示三个操作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)
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
,例如nil
,AnyObject
,但没有成功。
非常感谢任何帮助!
答案 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