Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 单击按钮,在BarButtonItem下方显示下拉菜单(popover)_Ios_Swift_Uibarbuttonitem_Popover_Rightbarbuttonitem - Fatal编程技术网

Ios 单击按钮,在BarButtonItem下方显示下拉菜单(popover)

Ios 单击按钮,在BarButtonItem下方显示下拉菜单(popover),ios,swift,uibarbuttonitem,popover,rightbarbuttonitem,Ios,Swift,Uibarbuttonitem,Popover,Rightbarbuttonitem,当我点击“+”时,我想在右按钮下显示菜单(popover),其中有两个选项。按其中一个选项将显示其他视图控制器 我使用的是Xcode 10和Swift 4.2 像这样: 这是我现在的代码,没有任何事情发生。我做错了什么?我可以用不同的方式写吗 import Foundation class RootVC: UITableViewController { @IBOutlet weak var openSideMenu: UIBarButtonItem! let itemA

当我点击“+”时,我想在右按钮下显示菜单(popover),其中有两个选项。按其中一个选项将显示其他视图控制器

我使用的是Xcode 10和Swift 4.2

像这样:

这是我现在的代码,没有任何事情发生。我做错了什么?我可以用不同的方式写吗

import Foundation

class RootVC: UITableViewController {

    @IBOutlet weak var openSideMenu: UIBarButtonItem!

    let itemArray = ["1", "2", "3"]

    override func viewDidLoad() {
        super.viewDidLoad()

        openSideMenu.target = self.revealViewController()
        openSideMenu.action = #selector(SWRevealViewController.revealToggle(_:))
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return itemArray.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "RootCell", for: indexPath)

        cell.textLabel?.text = itemArray[indexPath.row]

        return cell
    }

    @IBAction func addBarButtonPressed(_ sender: UIBarButtonItem) {
        let menu = UIMenuController.shared
        menu.menuItems =
            [UIMenuItem(title: "Test me", action: Selector("deleteLine")),
             UIMenuItem(title: "Test me", action: Selector("deleteLine")),
             UIMenuItem(title: "Test me", action: Selector("deleteLine"))]

        menu.setTargetRect((self.navigationItem.rightBarButtonItems?.first?.frame)!, in: self.view)
        becomeFirstResponder()
        menu.setMenuVisible(true, animated: true)

    }

}
extension UIBarButtonItem {

    var frame: CGRect? {
        guard let view = self.value(forKey: "view") as? UIView else {
            return nil
        }
        return view.frame
    }

}

我使用辅助实验室/下拉式CocoaPods()解决我的问题

这是代码:

import Foundation
import DropDown

class ViewController: UIViewController {

   @IBOutlet weak var addBarButton: UIBarButtonItem!

   let rightBarDropDown = DropDown()

   override func viewDidLoad() {
      super.viewDidLoad()

      rightBarDropDown.anchorView = addBarButton
      rightBarDropDown.dataSource = ["Generate New", "Add Manual"]
      rightBarDropDown.cellConfiguration = { (index, item) in return "\(item)" }
   }

   @IBAction func showBarButtonDropDown(_ sender: AnyObject) {

      rightBarDropDown.selectionAction = { (index: Int, item: String) in
        print("Selected item: \(item) at index: \(index)") }

      rightBarDropDown.width = 140
      rightBarDropDown.bottomOffset = CGPoint(x: 0, y:(rightBarDropDown.anchorView?.plainView.bounds.height)!)
      rightBarDropDown.show() 
   }
}

你能看一下菜单吗controller@TobiUIMenuController?我没有,它必须在一个单独的类中吗?如果你想在你想要使用的组件上寻找更好的资源,它们不是
下拉列表
,但是@Hrvoje你可以在iPhone上的弹出窗口中显示你的模态视图控制器,但是你必须做更多的工作。这里有一个问题,你想实现什么