「+」をクリックすると、右の BarButtonItem の下にメニュー (ポップオーバー) が表示され、2 つのオプションが表示されます。これらのオプションのいずれかを押すと、他のビュー コントローラーが表示されます。
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
}
}