ContextMenuConfiguration для пользовательских изображений?

Я хочу, чтобы изображение пользователей появлялось во всплывающем окне (без опции действия), а затем закрывалось при касании снаружи.

Скажем, табличное представление состоит из двух элементов пользовательского интерфейса (кнопки и текста) и одного изображения. Как бы вы установили всплывающее контекстное меню только для изображения - immy?

public override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as!  ViewControllerTableViewCell
    let immy = cell.viewWithTag(1) as! UIImageView
    let person: Userx = people[indexPath.row]
    let button = cell.viewWithTag(3) as! UIButton
    cell.lblName.text = person.Education
    cell.postID = self.people[indexPath.row].postID
    if let PhotoPosts = person.PhotoPosts {
        let url = URL(string: PhotoPosts)
        print(PhotoPosts, "sttdb")
        immy.sd_setImage(with: url)
    }
    return cell
}

extension homepage {
    func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
        let configuration = UIContextMenuConfiguration(identifier: nil, previewProvider: nil)
        return configuration
    }
}

Ниже представлен ViewControlleTableViewCell, добавленный после первого комментария. Мой ответ на комментарий также объясняет, как это выглядит в main.storyboard.

class ViewControllerTableViewCell: UITableViewCell {    

    @IBOutlet weak var button: UIButton!
    @IBOutlet weak var immy: UIImageView!
    @IBOutlet weak var lblgenre1: UILabel!    
    @IBOutlet weak var lblName: UILabel!
    @IBOutlet weak var lblName1: UILabel!
    @IBOutlet weak var likeLabel: UILabel!

    var postID: String!
    var caption1: String!
    var keyToPost: String!
    var latestLocation1: [String: Double]?
    let databaseRef = Database.database().reference()
    var refArtists: DatabaseReference!

    let profileImageView: UIImageView = {
        let imageView = UIImageView()
        
        return imageView
    } ()
    
    override func awakeFromNib() {
        super.awakeFromNib()
    }
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }

    @IBAction func button1(_ sender: Any) {

    }
    @IBAction func button2NBTHISISTORPREVENTSEGUE(_ sender: Any) {

    }
}

На домашней странице:

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

1 ответ

Решение

Что вам нужно, так это включить взаимодействие с пользователем в вашем UIImageViewсделай свой ViewControllerTableViewCell соответствовать UIContextMenuInteractionDelegate, создать UIContextMenuInteractionи установите свою ячейку в качестве делегата. Затем добавьте итерацию в представление изображения. Не забудьте удалитьcontextMenuInteraction из вашего расширения HomePage.

Ваш ViewControllerTableViewCell Реализация взаимодействия contextMenuInteraction должна выглядеть так:

import UIKit

class ViewControllerTableViewCell: UITableViewCell, UIContextMenuInteractionDelegate {
    @IBOutlet weak var immy: UIImageView!
    override func awakeFromNib() {
        super.awakeFromNib()
        immy.isUserInteractionEnabled = true
        immy.addInteraction(UIContextMenuInteraction(delegate: self))
    }
    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
    }
    func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
        UIContextMenuConfiguration(identifier: nil, previewProvider: nil)  { _ in
            let share = UIAction(title: "Share", image: UIImage(systemName: "square.and.arrow.up")) { _ in
               // share code
            }
            return UIMenu(title: "Profile Picture Menu", children: [share])
        }
    }
}
Другие вопросы по тегам