我正在尝试设置一个.contextMenu
带有切换值的按钮的SwiftUI Bool
。上下文菜单的按钮文本应该在Bool
切换时发生变化。但上下文菜单不会更新。有没有办法强制更新上下文菜单?
描述问题的示例代码:
import SwiftUI
struct Item: Identifiable {
let id = UUID()
let user: String
var active: Bool
}
struct ContentView: View {
@State var items: [Item] = [
Item(user: "Daniel",active: false),
Item(user: "Jack", active: true),
Item(user: "John", active: true)
]
@State var isOn : Bool = false
var body: some View {
List {
ForEach(items) { item in
VStack {
Text("\(item.user)")
HStack {
Text("Active ? ")
Text(item.active ? "YES": "NO")
}
}.contextMenu{
Button(action: …
Run Code Online (Sandbox Code Playgroud) 是否可以滚动到TextEditor
当前光标位置?
我有 aList
作为TextEditor
最后一行。我滚动到最后一行,List
以确保 位于TextEditor
键盘上方。
问题是,由于我将滚动锚设置为.bottom
,因此在编辑长文本时,当滚动视图滚动到行的底部时,顶部的文本不可见。
您应该能够使用以下代码重新创建问题。只需输入一些长文本,然后尝试在顶部编辑该文本。
import SwiftUI
struct ContentView: View {
@State var items: [String] = ["Apples", "Oranges", "Bananas", "Pears", "Mangos", "Grapefruit","Apples", "Oranges", "Bananas", "Pears", "Mangos", "Grapefruit"]
@State private var newItemText : String = ""
var body: some View {
ScrollViewReader { (proxy: ScrollViewProxy) in
List{
ForEach(items, id: \.self) {
Text("\($0)")
}
TextEditor(text: $newItemText)
.onChange(of: newItemText) { newValue in
proxy.scrollTo("New Item TextField", anchor: .bottom)
}.id("New Item TextField") …
Run Code Online (Sandbox Code Playgroud) 在 SwiftUI 上,TextField
您可以使用修饰符为键盘的返回/提交按钮设置操作.onSubmit()
。你如何实现同样的目标TextEditor
?(.onSubmit()
似乎不起作用。)
您可以在 UIKit 中设置系统映像(SF Symbol)UIImage(systemName: "pencil")
。对于 macOS 应用程序,您可以在 Storyboard 中设置系统映像。但是,我找不到以编程方式为 macOS 设置系统映像的方法。那么这是否可能,或者系统映像仅限于 macOS 应用程序中的情节提要。
imageView.image = NSImage(named: "pencil") //result is no image
Run Code Online (Sandbox Code Playgroud) 当我尝试打开 Xcode 项目时,我收到一条错误消息:
无法打开“/Users/.../[].xcodeproj”处的项目,因为它采用未来的 Xcode 项目文件格式。使用兼容版本的 Xcode 调整项目格式,以允许该版本的 Xcode 打开它。
我目前使用的是 Xcode 12.5.1,但没有安装 Xcode 13。有一个类似的问题(Xcode 13 - '/Users/test.xcodeproj' 的项目无法打开,因为它采用未来的 Xcode 项目文件格式),建议更改项目格式以使其与 Xcode 12 兼容,但我可以'不这样做,因为我无法在 Xcode 12 中打开项目文件。
我正在尝试创建带有粗体文本的工具提示。macOS 上的一些苹果应用程序使用此行为。我该如何实现这一目标?我目前的代码
btn.tooltip = "Open Options"
//tooltip doesn't accept attributed strings.
Run Code Online (Sandbox Code Playgroud)
swift ×4
swiftui ×3
cocoa ×1
contextmenu ×1
macos ×1
nsimage ×1
sf-symbols ×1
swiftui-list ×1
tooltip ×1
xcode ×1
xcode12 ×1
xcode13 ×1