didSelectRowAtIndexpath не отвечает на клики - PullRequest
0 голосов
/ 01 апреля 2019

Я делаю приложение для студентов старших классов. В этом представлении пользователь должен иметь возможность выбрать единицы, которые он хочет изучить для определенного предмета, и индексный путь выбранных единиц будет сохранен в массиве int и передан следующему представлению для отображения изображений. К сожалению, метод didSelectRowAt по какой-то причине не отвечает.

Делегат и источник данных установлены правильно, я знаю, что он не вызывается, когда я написал оператор print в функции, и ничего не было напечатано в консоли, когда я щелкаю по любой ячейке таблицы.

var units = [String]()
var selectedRows = [Int]()

override func viewDidLoad() {
    super.viewDidLoad()
    tableView.delegate = self
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return units.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "unitCell", for: indexPath) as! UnitCell
    cell.textLabel?.text = units[indexPath.row]
    return cell
}

func tableView(tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    selectedRows.append(indexPath.row)
    print(selectedRows)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    let destination = segue.destination as! ImageView
    destination.folderNames = selectedRows
}

Я ожидаю массив int индексов строк выбранных ячеек. Но сейчас он просто пуст.

Ответы [ 3 ]

1 голос
/ 02 апреля 2019

Если код, отображаемый в вашем вопросе, точен, значит, подпись метода didSelectRowAt неверна.Оно должно быть:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

Обратите внимание на начальный «_» для первого параметра.Если ваш класс - UITableViewController, вам также необходимо добавить ключевое слово override.

Если ваш код уже использует эту подпись, обновите свой вопрос, чтобы отразить это.

Такжеэтот ведущий код не может быть правильным.Пожалуйста, обновите его до того, что вы на самом деле используете,

var units = String var selectedRows = Int

0 голосов
/ 01 апреля 2019
  • Во-первых, ваш didSectRow ограничен, поэтому, пожалуйста, используйте ниже одного

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
    
  • Во-вторых, вы должны установить TableViewДелегируйте Себе, как показано ниже

    tableView.delegate = self
    
0 голосов
/ 01 апреля 2019

Вы должны использовать метод делегата

optional func tableView(_ tableView: UITableView, 
         didSelectRowAt indexPath: IndexPath)

Вместо существующего

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath)

Попробуйте поделиться своими результатами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...