作为示例,我有一个 SwitUI ContentView。当你第一次做这个项目时就会出现这个。
import SwiftUI
struct ContentView: View {
var manager = TestManager()
var body: some View {
ZStack{
Color(.green)
.edgesIgnoringSafeArea(.all)
VStack {
Text("Test Text")
Button(action:{}) {
Text("Get number 2")
.font(.title)
.foregroundColor(.white)
.padding()
.overlay(RoundedRectangle(cornerRadius: 30)
.stroke(Color.white, lineWidth: 5))
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个 TestManager 来处理 Api 调用。我为该类创建了一个具有两个功能的代表。
protocol TestManagerDelegate {
func didCorrectlyComplete(_ testName: TestManager, model: TestModel)
func didFailWithError(_ error: Error)
}
struct TestManager {
var delegate: TestManagerDelegate?
let urlString = "http://numbersapi.com/2/trivia?json"
func Get(){
if let url = URL(string: urlString){ …Run Code Online (Sandbox Code Playgroud) struct Testing: View {
var body: some View {
NavigationView{
VStack {
Text("View 1")
Text("View 1.3")
NavigationLink(destination: TestView(),
label: {
Text("View 1 navigation")
})
}
}
}
}
struct TestView: View {
var body: some View {
VStack {
Text("View 2")
}
.navigationBarItems(trailing:NavigationLink(
destination: Text("View 3"),
label: {
Text("Navigate")
}))
}
}
Run Code Online (Sandbox Code Playgroud)
当单击NavigationLinkTestViews 内部时navigationBarItems,它会导航到视图 3。当我单击后退按钮时,它不会返回到 TestView,而是会一直返回到测试。
如何让它返回到上一个视图而不是第一个视图?
我正在使用 Xcode 12。
我试图在Picker所选选项旁边显示单词,但这些单词永远不会正确显示。我希望用户能够单击文本Picker也能够打开。我尝试将文本放在选择器之外,这会导致正确显示,但文本不可单击。我正在使用Xcode 13 Beta 5和iOS15。
struct ContentView: View {
@State var fruit = "Apple"
let fruits = ["Apple","Orange","Pear","Grape"]
var body: some View {
HStack {
Picker(selection: $fruit) {
Text("Picked:")
ForEach(fruits, id: \.self){ fruit in
Text(fruit)
}
} label: {
Text("")
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
为满足我的要求而进行的调整如下所示。现在,标签内的任何内容都可以单击。
Menu {
Picker(selection: $fruit, label: EmptyView()) {
ForEach(fruits, id: \.self) { fruit …Run Code Online (Sandbox Code Playgroud)