首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI重命名SideBar项目

SwiftUI重命名SideBar项目
EN

Stack Overflow用户
提问于 2020-07-29 11:19:16
回答 1查看 207关注 0票数 0

我正在使用SwiftUI并创建一个SlideMenu,我想重命名我的菜单项。我通过将文本更改为TextField来完成此操作,但TextField默认情况下处于禁用状态。TextField有什么问题,我无法点击它,或者有什么方法可以在不交换文本的情况下重命名<-> TextField?

代码语言:javascript
复制
    struct CellView: View {
    @State private var isRename = false
    @State private var newName: String = ""
    var menuItem: MenuItem
    var body: some View {
        HStack {
            Image(systemName: "folder")
                .foregroundColor(.accentColor)
            if isRename {
                TextField(menuItem.name ?? "Unknow name", text: $newName)
            }else {
                Text(menuItem.name ?? "Unknow name")
            }
            Spacer()
        }        
        .contextMenu {
            Button(action: {
                isRename = true
            }) {
                HStack {
                    Image(systemName: "pencil")
                        .foregroundColor(.accentColor)
                    Text("Rename")
                }
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2020-07-29 11:44:20

我不认为它是禁用的(正如测试提供的代码),你只看到占位符,TextField默认不在焦点中。

所以这里有一个可行的解决方案(基于this answerCustomTextField )

代码语言:javascript
复制
    if isRename {
         CustomTextField(text: $newName,
                nextResponder: .constant(nil),
                isResponder: .constant(true),
                isSecured: false,
                keyboard: .default)
    }else {
        Text(menuItem.name ?? "Unknow name")
    }
    Spacer()
}        
.contextMenu {
    Button(action: {
        newName = menuItem.name ?? "Unknown name"
        isRename = true
    }) {

注意:没有显示什么是MenuItem,但考虑了将文本字段直接绑定到menuItem.name的可能性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63145829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档