Выполнить переход в зависимости от изображения, повернутого в пользовательской ячейке TableView - PullRequest
0 голосов
/ 20 февраля 2019

Простой, как мой вопрос о заголовке.Я пытаюсь перейти к другому контроллеру представления в зависимости от изображения, которое кто-то нажимает на мое представление таблицы.Например: если вы нажали на image1, выполните переход к gotoview1, если вы нажали на image2, выполните переход к gotoview2.

У меня есть массив изображений:

let gameImages = [UIImage(named: "DonkeyKong"), UIImage(named: "TRex"), UIImage(named: "SuperMarioRun"), UIImage(named: "Arcades1")]

, и это моя ячейка для индексаЯ попытался выполнить переход с помощью func imageAction, но приложение вылетело:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomCell

    cell.frontImage.image = gameImages[indexPath.row]
    cell.title.text = gameTitles[indexPath.row]

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imageAction:")
    cell.frontImage.isUserInteractionEnabled = true
    cell.frontImage.addGestureRecognizer(tapGestureRecognizer)

    func imageAction(_ sender:AnyObject) {
        if cell.frontImage.image == UIImage(named: "DonkeyKong"){
           performSegue(withIdentifier: "goToDonkey", sender: self)
        }
    }

    return cell
}

У меня есть пользовательская ячейка, в которой я просто связал изображения как выход и выполнил некоторые базовые модификации.Просто говорю на случай, если это имеет значение.

1 Ответ

0 голосов
/ 20 февраля 2019

попробуйте вместо этого.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomCell
cell.imageButton.addTarget(self, action: #selector(self.imageAction(_:)), for: .touchUpInside)
cell.imageButton.tag = indexPath.row
cell.frontImage.image = gameImages[indexPath.row]
cell.title.text = gameTitles[indexPath.row]

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "imageAction:")
cell.frontImage.isUserInteractionEnabled = true
cell.frontImage.addGestureRecognizer(tapGestureRecognizer)
return cell

}

func imageAction(_ sender:UIButton) {
        switch sender.tag{
        case 0:
            self.performSegue(withIdentifier: "goToDonkey", sender: self)
        case 1:
            performSegue(withIdentifier: "goToTRex", sender: self)
        case 2:
            performSegue(withIdentifier: "goToSuperMarioRun", sender: self)
        case 3:
            performSegue(withIdentifier: "goToArcades1", sender: self)
        default:
            break
        }
    }

Функция imageAction не является элементом self, поскольку является частью функции делегата просмотра таблицы, а не self.вот почему нераспознанный экземпляр селектора.но я могу переписать функцию с помощью другого делегата, но поскольку вы не хотите использовать ячейку, выберите только изображение, которое может решить вашу проблему.

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