gpt4 book ai didi

ios - 如何在运行时更改 UIMenu 内 UIAction 的状态?

转载 作者:行者123 更新时间:2023-12-04 11:55:11 26 4
gpt4 key购买 nike

如何更改 UIAction 的状态?目标是在 UIMenu 内的 UIAction 旁边切换状态复选标记。
enter image description here
更改 UIAction 的 state通过存储在 View Controller 中的引用似乎根本没有改变状态。我错过了什么吗?

// View Controller
internal var menuAction: UIAction!

private func generatePullDownMenu() -> UIMenu {
menuAction = UIAction(
title: "Foo",
image: UIImage(systemName: "chevron.down"),
identifier: UIAction.Identifier("come.sample.action"),
state: .on
) { _ in self.menuAction.state = .off } // <--- THIS LINE


let menu = UIMenu(
title: "Sample Menu",
image: nil,
identifier: UIMenu.Identifier("com.sample.menu"),
options: [],
children: [menuAction]
)

return menu
}

// Inside UI setup code block
let buttonItem = UIBarButtonItem(
title: "",
image: UIImage(systemName: "chevron.down"),
primaryAction: nil,
menu: generatePullDownMenu()
)
试图改变 action直接从闭包状态并得到“操作是不可变的,因为它是菜单的子项”错误。现在我怀疑一个 Action 对象总是一个不可变的对象。
menuAction = UIAction(
title: "Foo",
image: UIImage(systemName: "chevron.down"),
identifier: UIAction.Identifier("come.sample.action"),
state: .on
) { action in action.state = .off } // <--- THIS LINE

最佳答案

更换整个UIMenu状态更改的对象可以解决问题。

// view controller
internal var barButton: UIBarButtonItem!

// UI setup function
barButton = UIBarButtonItem(
image: UIImage(systemName: "arrow.up.arrow.down.square"),
primaryAction: nil,
menu: generatePullDownMenu()
)

// On state change inside UIAction
let actionNextSeen = UIAction(
title: "foo",
image: UIImage(systemName: "hourglass", )
state: someVariable ? .off : .on
) { _ in
someVariable = false
self.barButton.menu = self.generatePullDownMenu()
}
引用
https://developer.apple.com/forums/thread/653862

关于ios - 如何在运行时更改 UIMenu 内 UIAction 的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64738005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com