小编run*_*ter的帖子

如何在 SwiftUI 中实现自定义委托

作为示例,我有一个 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)

delegates delegation ios swiftui

5
推荐指数
1
解决办法
4870
查看次数

栏中项目中的导航链接返回到导航视图的顶部

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。

swift swiftui swiftui-navigationlink

5
推荐指数
1
解决办法
1097
查看次数

在选取器中显示多个视图

我试图在Picker所选选项旁边显示单词,但这些单词永远不会正确显示。我希望用户能够单击文本Picker也能够打开。我尝试将文本放在选择器之外,这会导致正确显示,但文本不可单击。我正在使用Xcode 13 Beta 5iOS15

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)

Picker带有文字的图片Picker 拾取器

为满足我的要求而进行的调整如下所示。现在,标签内的任何内容都可以单击。

Menu {
    Picker(selection: $fruit, label: EmptyView()) {
        ForEach(fruits, id: \.self) { fruit …
Run Code Online (Sandbox Code Playgroud)

swift swiftui ios15

-2
推荐指数
1
解决办法
1102
查看次数