SwiftUI NavigationStack NavigationLink 相同值,多个目的地

Dan*_*Dan 2 swiftui swiftui-navigationlink ios16 swiftui-navigationstack

我有一个这样的模型...

struct User: Codable {
    let followersCount: Int
    let followingCount: Int
}
Run Code Online (Sandbox Code Playgroud)

使用 NavigationStack 我希望能够使用基于 Value 的 NavigationLink

 NavigationLink(value: user.followersCount) {
    Text("Followers")
}

NavigationLink(value: user.followingCount) {
    Text("Following")
}
.navigationDestination(for: Int.self) { _ in
    FollowersView()
}

.navigationDestination(for: Int.self) { _ in
    FollowingView()
}
Run Code Online (Sandbox Code Playgroud)

因为这两个值都是 Int。有没有办法区分两者?

Ash*_*lls 7

声明一个对象:

enum Link {
   case followers(Int)
   case following(Int)
}
Run Code Online (Sandbox Code Playgroud)

然后像这样使用它:

NavigationLink(value: Link.followers(user.followersCount)) {
    Text("Followers")
}

NavigationLink(value: Link.following(user.followingCount)) {
    Text("Following")
}

.navigationDestination(for: Link) { link in
    switch link {
    case let .followers(count):
        FollowersView()
    case let .following(count):
        FollowingView()
    }
}
Run Code Online (Sandbox Code Playgroud)