# SwiftUIメモ. コードから NavigationLink を踏む

# やりかた

  • NavigationLink の作成時に tag, selection を指定
    • tag
    • selection
  • コードからは selection を指定する

#

今回は、List に追加して即その NavigationLink を開く、という動作にしようとした。

struct LeafView: View {
    @State var leaves: [Leaf]
    @State var selection: ObjectIdentifier?
        // ↑
        // これを更新すると 選択位置が更新される
        // UUID() は準拠してそう

    var body: some View {
        VStack {
            List (leaves) { leaf in
                NavigationLink(
                    destination: EditView(leaf: leaf),
                    tag: leaf.id, // ← List に渡すオブジェクトは Identifiable だから、これで良い気がする
                    selection: $selection) {


                Button(action: {
                    let leaf = createLeaf()
                    leaves.append(leaf) // ← List に追加して
                    selection = leaf.id // ← 即、踏む
                }) {
                    Image(systemName: "square.and.pencil")
                }

[ 📩 ご意見 ]