SwiftUI: переход от листа к новому виду - PullRequest
1 голос
/ 09 ноября 2019

Как я могу выдвинуть новый вид на стек навигации из листа. Я хочу отобразить список уроков. При закладке одного из уроков должен открыться лист с подробными сведениями об уроке. Из листа можно начать урок в новом полноэкранном режиме.

import SwiftUI

struct ContentView: View {
    var lessons = [Lesson(id:"1"), Lesson(id:"2"), Lesson(id:"3"), Lesson(id:"4"), Lesson(id:"5"), Lesson(id:"6"), Lesson(id:"7"), Lesson(id:"8"), Lesson(id:"9")]

    var body: some View {
        NavigationView(){
            Form{
                List(lessons){ lesson in
                    LessonButton(lesson: lesson)
                }
            }
        }
    }
}

struct LessonButton:View{
    @State var showSheet = false
    var lesson:Lesson

    var body: some View {
        Button(action:{self.showSheet = true}){
            Text(lesson.name)
        }.sheet(isPresented:$showSheet){
            NavigationLink(destination: Text("reached")){
                Text("start")
            }
        }
    }
}


struct Lesson: Identifiable{
    var id:String
    var name: String{
        "Lesson \(self.id)"
    }
}

Однако NavigationLink не работает. Я думаю, это потому, что Sheet не является ChildView представления содержимого. Наверное, поэтому это не работает. Но как этого достичь?

1 Ответ

1 голос
/ 09 ноября 2019

Лист - это режим модального просмотра, вы можете войти в него и вернуться из него.

На самом деле я не могу понять, зачем вам лист в описанном сценарии. Как вы описали, ожидается:

Список -> Подробности -> Урок,

, поэтому используйте две навигационные ссылки, одну в списке, одну в деталях. Это собственный дизайн Apple для использования NavigationView / NavigationLink - переход от представления к представлению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...