Я пытаюсь выполнить segue и передать звуковой сигнал audioNSURL на мой следующий viewController. Проблема, которая у меня есть, заключается в том, что в моем segue «indexPath» имеет значение null (не наследует значение tapped из tableView). Может кто-то указать мне верное направление?indexPath переменная, не наследующая значение
// Function for when cell is tapped in tableView
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var sound = self.sounds[indexPath.row]
var baseString : String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
var pathComponents = [baseString, sound.url]
var audioNSURL = NSURL.fileURLWithPathComponents(pathComponents)!
tableView.deselectRowAtIndexPath(indexPath, animated: true)
self.performSegueWithIdentifier("tableViewToPlayerSegway", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "tableViewToPlayerSegway" {
var secondScene = segue.destinationViewController as PlayViewController
if var indexPath = self.tableView.indexPathForSelectedRow() {
var sound = self.sounds[indexPath.row]
var soundName = sound.name
var baseString : String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
var pathComponents = [baseString, sound.url]
var audioNSURL = NSURL.fileURLWithPathComponents(pathComponents)!
secondScene.currentSound = audioNSURL
secondScene.soundName = sound.name
}
}
}
Calling deselectRowAtIndexPath до того performSegueWithIdentifier, вероятно, делает indexPathForSelectedRow возврата ноль. Если вы сначала вызываете функцию performSegue, она должна работать. – dan