UIMenuController not showing up the menu

后端 未结 3 1740
别那么骄傲
别那么骄傲 2020-12-20 08:16

I am very new to iOS. I am trying to show a pop up menu,but some how I am unable to display menu. Please help. Here is my code:

//DidLoad function to initial         


        
3条回答
  •  鱼传尺愫
    2020-12-20 08:28

    //View controller class which is implementing TableViewCellDelegate
    //Make sure you do followng
    //subclass UITableViewCell using class name TableViewCell which has delegate
    //you link UITableViewCell in ViewController class with TableViewCell in Custom Class column in interface builder(storyboard)
    //In TableViewCell cell identifier you give name as Cell.
    
    
    class ViewController: UITableViewController,TableViewCellDelegate {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
    
    
    
        }
    
    // tableview delegates
      override  func numberOfSectionsInTableView(tableView: UITableView) -> Int // Default is 1 if not
        {
    
            return 1;
        }
    
        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 10
        }
         override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
         {
    
            var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? TableViewCell
    
    
            if cell == nil {
                cell = TableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "Cell")
            }
            cell?.delegate=self;
            cell?.textLabel?.text="Cell text"
            return cell!
    
        }
    
         func tableCellSelected(tableCell: UITableViewCell)
         {
    
            var longprss : UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: Selector("display:"))
            tableCell.addGestureRecognizer(longprss)
    
         }
        //end tableview delegate
    
    
        // menu delegates
        override func canBecomeFirstResponder() -> Bool {
            return true
        }
    
    
    
        override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool
        {
            println(action);
            if(action == Selector("deleteLine:") || action == Selector("editRow:"))
            {
                return true;
    
            }
            else
            {
                return false;
            }
        }
    
        func deleteLine(sender: AnyObject?) {
    
            println("delete line")
    
        }
    
        func editRow(sender: AnyObject?) {
    
            println("edit row");
        }
    
        //end menu delegate
    
        //action handler of longPressGesture
    
        func display(gesture: UILongPressGestureRecognizer)
        {
    
            gesture.view?.becomeFirstResponder()
    
            println("Is first responder")
            var menu = UIMenuController.sharedMenuController()
            var deleteItem = UIMenuItem(title: "Delete", action: Selector("deleteLine:"))
            var editItems = UIMenuItem(title: "Edit", action: Selector("editRow:"))
            menu.menuItems = [deleteItem ,editItems]
    
            menu.setTargetRect(CGRect(x: 30, y: 8, width: 100, height: 50), inView: gesture.view!)
            menu.setMenuVisible(true, animated: true)
    
        }
    
    
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    
    
    }
    
    //This is subclass of UITableViewCell
    
    protocol TableViewCellDelegate
    {
        func tableCellSelected( var tableCell : UITableViewCell)
    }
    
    
    class TableViewCell: UITableViewCell {
    
        var delegate : TableViewCellDelegate?
    
        override func awakeFromNib() {
            super.awakeFromNib()
            // Initialization code
        }
    
        override func setSelected(selected: Bool, animated: Bool) {
            super.setSelected(selected, animated: animated)
            if((self.delegate) != nil)
            {
                delegate?.tableCellSelected(self);
            }
            // Configure the view for the selected state
        }
    
    }
    

提交回复
热议问题