小编Swi*_*kie的帖子

SwiftUI - 带有可识别协议的自定义标识符

我想知道是否可以用自定义标识符覆盖标准标识符。

我有一个简单的结构:

struct MyUserData: Identifiable {
    var userId: String
    var userFirstName: String
    var userLastName: String
}
Run Code Online (Sandbox Code Playgroud)

但是,如果var id: ObjectIdentifier结构中没有行,可识别协议将无法工作。同时,我不想使用“id”名称。userId 在我的模型中也是唯一的(它是一个 UUID)。有没有办法告诉可识别协议接受“userId”而不是“id”?

谢谢!

struct protocols swiftui identifiable

7
推荐指数
2
解决办法
929
查看次数

SwiftUI - List / ForEach 与 NavigationLink 和 isActive 结合使用无法正常工作

我正在尝试在 SwiftUI 中的列表或 ForEach 循环中执行 NavigationLink。不幸的是,我得到了一个非常奇怪的行为(例如,当点击 Leo 时它会打开 Karl,Opening Max 也指向 Karl)。

我已经发现它与 NavigationLink 中的“isActive”属性有关。不幸的是,我需要它在此处实现此行为:https : //i.stack.imgur.com/g0BFz.gif此处也询问SwiftUI - Nested NavigationView: Go back to root

我还尝试使用选择和标签属性,但我无法实现“返回根目录”机制。

这是示例:


import SwiftUI


struct Model: Equatable, Hashable {
    var userId: String
    var firstName: String
    var lastName: String
}


struct ContentView: View {
    
    @State var navigationViewIsActive: Bool = false
    
    var myModelArray: [Model] = [
        Model(userId: "27e880a9-54c5-4da1-afff-05b4584b1d2f", firstName: "Leo", lastName: "Test"),
        Model(userId: "1050412a-cb12-4160-b7e4-2702ab8430c3", firstName: "Max", lastName: "Test"),
        Model(userId: "1050412a-cb12-4160-b7e4-2702ab8430c3", firstName: "Karl", lastName: "Test")] …
Run Code Online (Sandbox Code Playgroud)

foreach list swiftui swiftui-navigationlink

7
推荐指数
1
解决办法
1739
查看次数

SwiftUI - iOS 15.0 中已弃用“windows”:使用 UIWindowScene.windows

我有以下代码块:

struct StackOverflow: View {
    var body: some View {
        Text("Hello, World!")
            .padding(.bottom,UIApplication.shared.windows.first?.safeAreaInsets.bottom ?? 15)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,这会返回以下错误:

iOS 15.0 中已弃用“windows”:在相关窗口场景上使用 UIWindowScene.windows

我尝试利用 UIWindowScene.windows 但它无法正常工作。有什么想法如何将其转换为新语法吗?

uiapplication uiapplicationdelegate swiftui

6
推荐指数
1
解决办法
4137
查看次数

SwiftUI - 胶囊填充直到 StrokeBorder

我试图填充胶囊式的描边边框,但不幸的是它填充了矩形。见下图:

在此输入图像描述

有什么想法可以让它只填充到笔画边框吗?我想使用该字段作为搜索框,这就是为什么我想在其中使用文本字段。

这是我的代码:

struct ContentView: View {
    
    var body: some View {
        
        HStack{
            TextField("Search", text: .constant(""))
        }
        .padding()
        .frame(maxWidth:300)
        .background(
            Capsule()
                .strokeBorder(Color.black,lineWidth: 0.8)
                .background(Color.blue)
                .clipped()
        )
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

background border swiftui

6
推荐指数
1
解决办法
3180
查看次数