SnapSh0t
@SnapSh0t
iOS-Developer

Как реализовать нажатие на ячейку и переход к другому окну swift?

Здравствуйте, друзья!

Как реализовать так, что по нажатию на одну из ячеек в TableView я смог переходить на конкретный ViewController. Нужно например по нажатию на 1 ячейку открыть Push Name1ViewController, на 2 ячейке Name2ViewController и так далее. Ни где инфу не нашел. Опыта мало, подскажите. Заранее благодарю за уделенное время. 919f5b00f0184a028a60f534350f6221.png2d828ccc6e9a4be39af6d5a13084d413.png60673d769f95460180679c3c55ee6dd9.png
  • Вопрос задан
  • 6092 просмотра
Решения вопроса 1
ManWithBear
@ManWithBear
Swift Adept, Prague
Оборачиваем эти контроллеры в отдельный объект (кложур как вариант) и по тапу на соответствующую ячейку обрабатываем его.

UPD. Пример:
struct Row {
    let title: String
    let generator: (Parameters) -> UIViewController
}

let section: [Row] = [
    Row(title: "first", generator: { (parameters) -> UIViewController in
        return FirstViewController()
    }),
    Row(title: "second", generator: { (parameters) -> UIViewController in
        return SecondViewController()
    })
]

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let row = section[indexPath.row]
    let vc = row.generator(Parameters)
    navigationController?.pushViewController(vc, animated: true)
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@freeg0r
.. some dude ..
У Вас же есть метод didSelectRowAt indexPath: который вызывается при нажатии на cell, в нем есть и номер ячейки, и номер секции, а нужные контроллеры (не их самих, а информацию, какой именно контроллер нужен для данной ячейки) кладете в массив с индексами, соответствующими номерам ячеек. Точно так же, как Вы достаете текст для ячейки в CellForRowAt indexPath: из массива names.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы