Ich mache eine App, die Informationen über Text innerhalb von Zellen an einen WebViewController sendet mit Swipe-Aktionen. Die Durchzug Aktion:Schlechte Ausnahme bei Swipe-Aktion Zelle Swift
let sendToWebsite = UITableViewRowAction(style: .Default, title: "Website")
{ (action, indexPath) in
self.performSegueWithIdentifier("yourSegueIdentifier", sender: nil)
}
sendToWebsite.backgroundColor = UIColor.blueColor()
return [sendToWebsite]
}
Dies funktioniert gut, aber ich habe auch zwei segues aus denselben View-Controller kommen, auf zwei anderen VCs. Der erste Abschnitt (recipeDetail) ist, wenn Sie direkt auf die Zelle tippen und funktioniert gut, aber der zweite Abschnitt (yourSegueIdentifier) ist eine Schaltfläche, die angezeigt wird, wenn Sie die Folie Aktion auf der Zelle aktivieren und nicht funktioniert.
die segues:
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]
}
}
Auf der Linie
nextVC.recipe = recipes[indexPath!.row]
indexPath als Null herauskommen wird, und geben Sie die folgende Fehlermeldung
indexPathForSelectedRow ist null zurückkehrt, wahrscheinlich, weil Ihre Zeile nicht in einem ausgewählten Zustand befindet. Ist die Auswahl in der Tabellenansicht aktiviert? Haben Sie die Delegatmethode didSelectRowAtIndexPath implementiert? Wenn Sie die Zeile durchziehen, wird sie nicht automatisch in einen ausgewählten Zustand versetzt. – SArnab