2016-11-16 3 views
1

У меня есть настройка, которая передает информацию (указатель для выбранной ячейки) в tableViewController, чтобы целевой UIViewController мог отображать некоторую текстовую информацию на ярлыке, вызывая соответствующий индекс из массива. Все это работает правильно. Однако есть 3 раздела, и я хочу, чтобы целевой UIViewController знал, какой раздел был выбран. (Т.е., выбирая первую ячейку в секции 1 и первую ячейку в разделе 2, оба возвращают индекс 0, но мне нужно, чтобы она была дифференцируемой). Я подумал о передаче значения выбранного раздела (а затем настройки инструкции if/else в целевом UIViewController), но я не уверен, как это сделать соответствующим образом. Вот текущий код у меня есть для не-дифференцирующего индекса проходит:Как получить didSelectRowAt IndexPath для разделения разделов?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     let indexPath = self.tableView.indexPathForSelectedRow 
     let rowSelectedd = indexPath?.row 
     let destViewController: Controller = segue.destination as! Controller 
     destViewController.rowSelected = rowSelectedd! 
    } 

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
     performSegue(withIdentifier: "rowSelected", sender: rowSelectedd) 
    } 

В принципе, как я могу передать значение секции выбранной ячейки?

+0

Что такое 'rowSelectedd' внутри метода' didSelectRowAt'? Это даже не компилируется. – rmaddy

ответ

1

Если контроллер назначения необходим как строки и раздел выбранной строки, а затем использовать свойство IndexPath вместо Int на собственность и передать всю indexPath вместо того, чтобы просто indexPath.row.

Но зачем диспетчеру необходимо знать путь указателя? Это бессмысленно. Почему бы не передать фактические данные для этого пути указателя (от вашей модели данных) до контроллера назначения?

+0

, потому что данные в этой ячейке исходят из итерации из множества массивов (все из одного индекса). Я просто хочу отображать их на более крупной странице, поэтому я решил, что просто перейду через тот же массив с этим значением indexpath.row. Как я могу передать данные вместо этого? –

+0

1) Ваши данные не должны быть в связке массивов. Он должен быть в одном массиве. 2) Чтобы передать данные вместо указательного пути, создайте свойство для данных вместо строки строки или индекса. – rmaddy

+0

Вы имеете в виду многомерный массив? Поскольку мои данные поступают из запроса, извлекается из БД, а различные свойства запрошенного объекта добавляются к различным массивам. Не знаете, как я буду делать это без кучи массивов, если вы не имеете в виду многомерную? –

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