簡體   English   中英

如何在表格視圖的didSelect上顯示彈出框

[英]How to show popover on didSelect of table view

在此處輸入圖片說明

我想在我選擇的tableview上實現這種類型的視圖。 這是一個使用快速編程的iOS項目。效果類似於whatsapp ios應用...

誰能對表格視圖單元格進行此操作有何建議?

該工具提示實際上有一個名稱UIMenuController ,可以自定義並在您自己的應用程序中使用:

class ResponsiveView: UIView {
    override var canBecomeFirstResponder: Bool {
        return true
    }
}

class ViewController: UIViewController {

    var responsiveView: ResponsiveView!

    override func viewDidLoad() {
        super.viewDidLoad()

        responsiveView = ResponsiveView()

        // Add our responsive view to a super view
        responsiveView.frame = CGRect(x: 0, y: 0, width: 200, height: 50)
        responsiveView.center = self.view.center
        responsiveView.backgroundColor = UIColor(red: 124.0/255.0, green: 112.0/255.0, blue: 255.0/255.0, alpha: 1.0)
        responsiveView.layer.cornerRadius = 4;
        responsiveView.layer.masksToBounds = true
        self.view.addSubview(responsiveView)

        // Add a long press gesture recognizer to our responsive view
        responsiveView.isUserInteractionEnabled = true
        let longPressGR = UILongPressGestureRecognizer(target: self, action: #selector(longPressHandler))
        longPressGR.minimumPressDuration = 0.3 // how long before menu pops up
        responsiveView.addGestureRecognizer(longPressGR)
    }

    @objc func longPressHandler(sender: UILongPressGestureRecognizer) {
        guard sender.state == .began,
            let senderView = sender.view,
            let superView = sender.view?.superview
            else { return }

        // Make responsiveView the window's first responder
        senderView.becomeFirstResponder()

        // Set up the shared UIMenuController
        let saveMenuItem = UIMenuItem(title: "Save", action: #selector(saveTapped))
        let deleteMenuItem = UIMenuItem(title: "Delete", action: #selector(deleteTapped))
        UIMenuController.shared.menuItems = [saveMenuItem, deleteMenuItem]

        // Tell the menu controller the first responder's frame and its super view
        UIMenuController.shared.setTargetRect(senderView.frame, in: superView)

        // Animate the menu onto view
        UIMenuController.shared.setMenuVisible(true, animated: true)
    }

    @objc func saveTapped() {
        print("save tapped")
        // ...
        // This would be a good place to optionally resign
        // responsiveView's first responder status if you need to
        responsiveView.resignFirstResponder()
    }

    @objc func deleteTapped() {
        print("delete tapped")
        // ...
        responsiveView.resignFirstResponder()
    }
}
func menuPopup(index:IndexPath){
 var menuController = UIMenuController.shared
        let actionOneMenuItem = UIMenuItem(title: "Action1", action: #selector(actionOne))
        let actionTwoMenuItem = UIMenuItem(title: "Action1", action: #selector(actionTwo))
        let actionThreeMenuItem = UIMenuItem(title: "Action3", action: #selector(actionThree))
        menuController.isMenuVisible = true
        menuController.arrowDirection = .default
        let rect = contactsTableView.rectForRow(at: index)
        menuController.setTargetRect(rect, in: contactsTableView)
        menuController.menuItems = [actionOneMenuItem, actionTwoMenuItem,actionThreeMenuItem]
        menuController.setMenuVisible(true, animated: true)
    }

    @objc func actionOne(){

    }
    @objc func actionTwo(){

    }
    @objc func actionThree(){

    }

    override var canBecomeFirstResponder: Bool{
        return true
    }

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        contactsTableView.deselectRow(at: indexPath, animated: true)
        tableView.becomeFirstResponder()
        menuPopup(index: indexPath)
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM