2016-02-03 2 views
1

Я видел много решений, однако я не могу получить это право. Я хочу вызвать prepareForSegue из функции didSelectRowAtIndexPath, когда ячейка нажата. Затем я хочу получить индекс строки, который был задействован, изнутри функции prepareForSegue, поэтому я могу использовать его для передачи информации в другое представление. Я думаю, что правильно вызываю функцию, но в моей функции prepareForSegue есть что-то не так. Я знаю, что это простое решение, которое я просто застрял. Heres мой текущий кодОтправка indexPath.row из didselectRowAtIndexPath для подготовкиForSegue через отправителя

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    performSegueWithIdentifier("notificationsToAnswers", sender: self) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    //the below line is incorrect and should be something else 
    let selectedIndex = tableView.indexPathForSelectedRow?.row 
    //pass data on using the index 
} 
+1

Что не работает? Как эта линия неверна? – Wain

+0

selectedIndex всегда получает значение nil с текущим кодом – rohaldb

ответ

2

Вы должны пройти так:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    performSegueWithIdentifier("notificationsToAnswers", sender: indexPath) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "notificationsToAnswers" { 
     //the below line is incorrect and should be something else 
     let selectedIndexPath = sender as! NSIndexPath 
     let index = selectedIndexPath.row 
     //pass data on using the index 
    } 

} 
+0

Предполагая, что у меня есть локальный массив, называемый результатами, который хранит мои данные. Если я попытаюсь получить к нему доступ с помощью результатов [selectedIndex], я получаю сообщение об ошибке, когда я не могу использовать NSIndex в качестве индекса для массива – rohaldb

+0

@rohaldb проверить мой ответ на редактирование –

+0

Итак, я заметил, что после прокрутки строки или после нажатия на кнопке редактирования, то есть, когда 'indexPathForSelectedRow' начинает возвращать нуль. не могли бы вы объяснить, почему это так. Но ваше решение было превосходным. – nyxee