我的视图中有一个 TextField,看起来像这样:
@FocusState private var keyboardFocused: Bool
VStack {
TextField("Name your item...", text: $itemName)
.focused($keyboardFocused)
...
}
Run Code Online (Sandbox Code Playgroud)
现在,这一切都嵌入到按下按钮时加载的视图中,如下所示:
Button(action: someAction, label: { ... })
.fullScreenCover(isPresented: $viewIsPresented) {
ViewWithTextField(...)
}
Run Code Online (Sandbox Code Playgroud)
我想做到这一点,以便在加载此视图时,自动激活 TextField/(聚焦?)并弹出键盘。我怎样才能做到这一点?
我在 SwiftUI 中有一个列表,如下所示:
@State var items = ["item0", "item1", "item2"]
List {
ForEach(items, id: \.self) { item in
ZStack {
Rectangle()
.frame(width: 150, height: 65)
Text(item)
}
.onMove { from, to in
items.move(fromOffsets: from, toOffset: to)
}
}
.listRowSeparator(.hidden)
.listRowBackground(Color.clear)
}
.listStyle(.plain)
.scrollContentBackground(.hidden)
Run Code Online (Sandbox Code Playgroud)
这个想法是在 ForEach 中显示项目,就好像它们只是“浮动”在屏幕上,而不是在列表中。
但是,当我拖动列表项(以在列表中重新排序;从 .onMove() 修饰符)时,会出现白色背景:
我想删除这个背景,所以看起来我只是移动列表项(只是圆角矩形,没有背景)。我怎样才能实现这个目标?
编辑:我添加了.onDrag {} \@ViewBuilder preview: {}在主动拖动时删除背景的功能,但当我们在开始拖动之前长时间按住该项目时,它仍然会出现。
我正在处理 SwiftUI 中的一个简单按钮,布局如下:
TabView {
ForEach(...) { ...
Button {...}
label {...}
}
}
Run Code Online (Sandbox Code Playgroud)
当我点击(但不释放)按钮时,它会默认突出显示该按钮;这可以。但是,如果我将这些按钮排列在分页选项卡视图中,则通过滑动来导航页面会突出显示这些按钮,这是我不想要的。
有没有办法禁用这个突出显示?最好,我想在点击按钮时保留突出显示,但在滑动时不保留突出显示,但如果我必须完全禁用它也没关系。
我环顾四周,但没有看到任何这方面的信息。如果我想在 SwiftUI 中拥有多个导航堆栈,并拥有多个添加到不同导航堆栈的导航链接,我该怎么做?在我的用例中,我使用选项卡视图,所以我会是这样的:
NavigationStack(path: $globalNavigationStack) {
TabView {
PrimaryView()
SecondaryView()
}
}
Run Code Online (Sandbox Code Playgroud)
那么也许在 PrimaryView 中:
struct PrimaryView: View {
var body: some View {
NavigationStack(path: $localNavigationStack) {
NavigationLink(value: SomeType.self) {
Button("This should add to local stack")
}
.navigationDestination(for: SomeType.val) { someType in
ViewOnLocalStack()
}
NavigationLink(value: SomeType.self) {
Button("This should add to global stack")
}
.navigationDestination(for: SomeType.val) { someType in
ViewOnGlobalStack()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但第二个NavigationLink将添加到本地堆栈。假设我有权访问全局路径,如何使第二个路径添加到全局路径?我尝试的是这样的:
NavigationStack(path: $globalNavigationStack) {
TabView {
PrimaryView()
SecondaryView()
}
}
.navigationDestination(for: SomeType.val) { someType …Run Code Online (Sandbox Code Playgroud) 我真的很喜欢 SwiftUI 中导航栏标题的外观,而且我喜欢它出现在安全区域的正下方,但当你向下滚动时出现在工具栏的主要部分。我想知道如何完全复制这种外观和行为,但使其可由用户编辑(最有可能通过文本字段?)
我试过了
.toolbar {
ToolbarItem(placement: .principal) {
TextField("Navigation Title", text: $mainTitle)
}
}
Run Code Online (Sandbox Code Playgroud)
但这只是将标题始终放置在工具栏中,而不是仅在您稍微滚动时才放置。
有任何想法吗?
随着 iOS 17 引入的新@Observable宏,我们现在可以通过以下方式使用环境对象
@Environment(MyType.self) var myTypeObj
Run Code Online (Sandbox Code Playgroud)
现在,如果myTypeObj有一些属性,请调用它myProperty,我想使用$语法将其作为绑定传递到某处,Swift 抱怨它找不到该变量。例如,
Picker("My Picker", selection: $myTypeObj.myProperty) { // we get an error on this line
ForEach(1 ... 50, id: \.self) { num in
...
}
}
Run Code Online (Sandbox Code Playgroud)
我们收到一条错误消息Cannot find $myTypeObj in scope:这是 Swift 的错误还是我做错了什么?
我在 SwiftUI 中有一个非常基本的视图,其中有一个标签,我正在努力让它向左对齐。这就是它的本质:
VStack(alignment: .leading) {
Label("Hi", ...)
}
.frame(maxWidth: .infinity)
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,标签都会保留在视图的中心。我怎样才能解决这个问题?
我是按照本教程https://www.javatpoint.com/how-to-install-magento-2-using-composer第一次安装 Magento 2 。XAMPP 已安装(Apache 和 MySQL 正在运行),数据库已在 PHPMyAdmin 上设置,但是当我尝试运行php bin/magento setup:install(教程中的步骤 23)时,出现错误:Could not validate a connection to Elasticsearch. No alive nodes found in your cluster
我怎样才能解决这个问题?