2014-09-11 3 views
0

У меня есть UITableView, который я настроил для перехода на другой VC, когда пользователь выбирает строку (таблица состоит только из одного массива). Я хочу передать индекс строки выбранного элемента. Я использую didSelectRowAtIndexPath, чтобы установить переменную с именем selectedCellIndex в индекс строки. Однако, поскольку у меня также есть таблицаView, настроенная для перехода к следующему VC prepareForSegue, срабатывает (или примерно в то же время) как didSelectRowAtIndexPath. В результате при первом выборе элемента из списка отправленное значение равно nil, после этого я всегда получаю предыдущее значение выбранной строки. Любые идеи о том, как убедиться, что переменная установлена ​​до перехода приложения на следующий сеанс без паузы?Устанавливается переменная до перехода segue происходит

Вот мой код:

var selectedCellIndex:Int! 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){ 
    var indexPath = tableView.indexPathForSelectedRow() as NSIndexPath? 
    selectedCellIndex = indexPath?.row as Int? 
} 


//SEGUE 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "signature" { 
     let vc = segue.destinationViewController as SignatureViewController 
     vc.index = "\(selectedCellIndex)" 
    } 
} 

Благодаря

ответ

0

Вы можете получить выбранный путь индекса из табличного непосредственно с помощью метода indexPathForSelectedRow. Нет необходимости реализовывать didSelectRowAtIndexPath, чтобы сохранить выбранный индекс.

Метод prepareForSegue: - единственный метод, в котором вы должны установить/получить доступ к переменным, необходимым для перехода.

+0

Yeap, вы правы. Чувствовать, что это был глупый вопрос сейчас ... – boidkan

Смежные вопросы