Swift - увеличить пользовательское изображение строки таблицы, выбрав строку - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть UITableView со строками, которые содержат изображение - я хочу увеличить выбранное изображение строки, которое я исследовал, и у меня есть этот код, однако он возвращает мое изображение ячейки по умолчанию, определенное в пользовательской ячейке, а НЕ изображение в выбранной строке таблицы.

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cellId", for: indexPath) as! myCell
 let items = self.itemsarray[indexPath.row]
    self.imageTapped(image: cell.itemsImageView.image!)
}

  func imageTapped(image:UIImage) {
    let newImageView = UIImageView(image: image)
    newImageView.image = image
    newImageView.frame = UIScreen.main.bounds
    newImageView.backgroundColor = .black
    newImageView.contentMode = .scaleAspectFit
    newImageView.isUserInteractionEnabled = true

    let tap = UITapGestureRecognizer(target: self, action: #selector(ItemViewController.dismissFullscreenImage(_:)))
    newImageView.addGestureRecognizer(tap)


    self.view.addSubview(newImageView)
    self.navigationController?.isNavigationBarHidden = true
    self.tabBarController?.tabBar.isHidden = true
}

Это проблемная строка self.imageTapped(image: cell.itemsImageView.image!) Любая помощь будет оценена.

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Проблема в том, что вы пытаетесь создать новую ячейку, когда вызываете это:

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

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

let cell = tableView.cellForRow(at:indexPath) as! myCell

Btw. Ваше имя класса myCell должно начинаться с заглавной буквы

0 голосов
/ 04 ноября 2018

Заменить

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

с

let cell = tableView.cellForRow(at:indexPath) as! myCell

, поскольку tableView.dequeueReusableCell должен возвращать другую ячейку для использования, а не для выбранной вами ячейки, вы должны использовать ее только внутри cellForRowAt

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