אור*_*hpt 5 uibarbuttonitem swift uimenu ios14
在 iOS 14 中,有新的 API 用于UIMenu,现在可以附加到UIBarButtonItem,就像这样:
@IBOutlet weak var addButton: UIBarButtonItem! // The button is from the storyboard.
override func viewDidAppear(_ animated: Bool) {
if #available(iOS 14.0, *) {
let simpleAction : UIAction = .init(title: "Simple", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: .init(), state: .mixed, handler: { (action) in
self.addButtonActionPressed(action: .simple)
})
let advancedAction : UIAction = .init(title: "Advanced", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: .init(), state: .mixed, handler: { (action) in
self.addButtonActionPressed(action: .advanced)
})
let actions = [simpleAction, advancedAction]
let menu = UIMenu(title: "", image: nil, identifier: nil, options: .displayInline, children: actions)
addButton.primaryAction = nil
addButton.menu = menu
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是,当我按下按钮时,什么也没有发生。只有当我长按按钮时,它才会显示菜单。我在网上看到过这段代码:
button.showsMenuAsPrimaryAction = true
Run Code Online (Sandbox Code Playgroud)
但这对我没有帮助,因为 Value of type 'UIBarButtonItem' has no member 'showsMenuAsPrimaryAction'
任何想法如何解决?我使用的是 Xcode 12.0 beta 4 (12A8179i)。谢谢
我解决了这个问题。如果这发生在你们任何人身上,你可以这样做:
尝试检查按钮是否有任何其他操作。如果有,它不会将菜单显示为主要操作。
如果您使用的是故事板,请改用代码,例如:
self.navigationItem.rightBarButtonItem = .init(systemItem: .add)
// Then configure the menu of the item here, by doing:
navigationItem.rightBarButtonItem!.menu = menu
// Replace 'menu' with your menu object.
Run Code Online (Sandbox Code Playgroud)
如果您知道任何其他提示,请随时编辑此问题并添加它们。
| 归档时间: |
|
| 查看次数: |
2873 次 |
| 最近记录: |