滑动操作单元格出现错误异常 Swift
Bad Exception on swipe action cell Swift
我正在制作一个应用程序,它使用滑动操作将有关单元格内文本的信息发送到 WebViewController。滑动动作为:
let sendToWebsite = UITableViewRowAction(style: .Default, title: "Website")
{ (action, indexPath) in
self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil)
}
sendToWebsite.backgroundColor = UIColor.blueColor()
return [sendToWebsite]
}
这工作正常,但我也有两个转场来自同一个视图控制器,到另外两个 VC。第一个 segue(recipeDetail) 是当您直接点击单元格并且工作正常时,但第二个 segue(yourSegueIdentifier) 是一个按钮,当您激活单元格上的滑动操作时出现并且不起作用。
转场:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "recipeDetail") {
let indexPath = self.tableView!.indexPathForSelectedRow
let destinationViewController: DetailViewController = segue.destinationViewController as! DetailViewController
destinationViewController.recipe = recipes[indexPath!.row]
}
else if segue.identifier == "yourSegueIdentifier"
{
let indexPath = self.tableView!.indexPathForSelectedRow
let nextVC: WebViewController = segue.destinationViewController as! WebViewController
nextVC.recipe = recipes[indexPath!.row]
}
}
在线
nextVC.recipe = recipes[indexPath!.row]
indexPath 显示为 nil 并给出以下错误消息
好吧,看起来在滑动动作上,tableView 没有注册 "indexPathForSelectedRow" 方法。
您也可以做的是设置一个全局 swipeIndex 变量
class ViewController: UIViewController{
var swipeIndex : Int!
//Code, code, code...
然后在调用滑动操作后设置它。
let sendToWebsite = UITableViewRowAction(style: .Default, title: "Website")
{ (action, indexPath) in
self.swipeIndex = indexPath.row
self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil)
}
sendToWebsite.backgroundColor = UIColor.blueColor()
return [sendToWebsite]
}
然后:
else if segue.identifier == "yourSegueIdentifier"
{
let indexPath = self.tableView!.indexPathForSelectedRow
let nextVC: WebViewController = segue.destinationViewController as! WebViewController
nextVC.recipe = recipies[self.swipeIndex]
}
}
我正在制作一个应用程序,它使用滑动操作将有关单元格内文本的信息发送到 WebViewController。滑动动作为:
let sendToWebsite = UITableViewRowAction(style: .Default, title: "Website")
{ (action, indexPath) in
self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil)
}
sendToWebsite.backgroundColor = UIColor.blueColor()
return [sendToWebsite]
}
这工作正常,但我也有两个转场来自同一个视图控制器,到另外两个 VC。第一个 segue(recipeDetail) 是当您直接点击单元格并且工作正常时,但第二个 segue(yourSegueIdentifier) 是一个按钮,当您激活单元格上的滑动操作时出现并且不起作用。
转场:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "recipeDetail") {
let indexPath = self.tableView!.indexPathForSelectedRow
let destinationViewController: DetailViewController = segue.destinationViewController as! DetailViewController
destinationViewController.recipe = recipes[indexPath!.row]
}
else if segue.identifier == "yourSegueIdentifier"
{
let indexPath = self.tableView!.indexPathForSelectedRow
let nextVC: WebViewController = segue.destinationViewController as! WebViewController
nextVC.recipe = recipes[indexPath!.row]
}
}
在线
nextVC.recipe = recipes[indexPath!.row]
indexPath 显示为 nil 并给出以下错误消息
好吧,看起来在滑动动作上,tableView 没有注册 "indexPathForSelectedRow" 方法。 您也可以做的是设置一个全局 swipeIndex 变量
class ViewController: UIViewController{
var swipeIndex : Int!
//Code, code, code...
然后在调用滑动操作后设置它。
let sendToWebsite = UITableViewRowAction(style: .Default, title: "Website")
{ (action, indexPath) in
self.swipeIndex = indexPath.row
self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil)
}
sendToWebsite.backgroundColor = UIColor.blueColor()
return [sendToWebsite]
}
然后:
else if segue.identifier == "yourSegueIdentifier"
{
let indexPath = self.tableView!.indexPathForSelectedRow
let nextVC: WebViewController = segue.destinationViewController as! WebViewController
nextVC.recipe = recipies[self.swipeIndex]
}
}