Swiftui NavigationStack ошибка - Нажатие на NavigationLink приводит к замораживанию, когда представление о назначении соIOS

Программируем под IOS
Ответить
Anonymous
 Swiftui NavigationStack ошибка - Нажатие на NavigationLink приводит к замораживанию, когда представление о назначении со

Сообщение Anonymous »

Код: Выделить всё

struct NavStack: View {

@AppStorage("userid") var userid: Int = 0

@State var memes = [MemeModel]()
@State var path = NavigationPath()

var body: some View {
NavigationStack(path: $path){

ScrollView(.vertical, showsIndicators: false){
LazyVStack(spacing: 100){
ForEach($memes, id: \.memeid){ meme in
MemeView(memes: self.$memes, memeid: meme.memeid)
}
}
}
.onAppear{
memes.append(MemeModel(memeid: 1, title: "meme1", pic: "bla.jpg"))
memes.append(MemeModel(memeid: 2, title: "meme2", pic: "joo.jpg"))
memes.append(MemeModel(memeid: 3, title: "meme3", pic: "das.jpg"))
memes.append(MemeModel(memeid: 4, title: "meme4", pic: "fsf.jpg"))
memes.append(MemeModel(memeid: 5, title: "meme5", pic: "asd.jpg"))
memes.append(MemeModel(memeid: 6, title: "meme6", pic: "dfvr.jpg"))
memes.append(MemeModel(memeid: 7, title: "meme7", pic: "fsfdf.jpg"))
memes.append(MemeModel(memeid: 8, title: "meme8", pic: "axaxe.jpg"))
}
}
}
}

struct MemeView: View {

@Environment(\.dismiss) var dismiss
func closeThisView(){

DispatchQueue.main.async {
self.dismiss()
}
}

@AppStorage("userid") var userid: Int = 0

@Binding var memes: [MemeModel]
@Binding var memeid: Int

var body: some View {

VStack(spacing: 20){
Text(String(memeid))

NavigationLink{
Comments()
} label: {
Text("comments")
}
}
}
}

struct Comments: View {

@AppStorage("userid") var userid: Int = 0

var body: some View {
VStack{
Text("comments view")
}
}
}

struct MemeModel: Codable {
var memeid: Int
var title: String
var pic: String
}
Когда я нажимаю на комментарий , тогда приложение замораживает. Это происходит только тогда, когда самый глубокий ребенок (

Код: Выделить всё

comments
) содержит значение AppStorage и работает при его удалении. Когда я просто использую memeview в качестве navigationlink (так что без какого -либо навигационной линии внутри memeview ), затем Freeze не произойдет.
Как это исправить ? Какой -нибудь обходной путь?>

Подробнее здесь: https://stackoverflow.com/questions/785 ... e-when-des
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»