SwiftUI Navigation автоматически закрывает / выдает - Realm - PullRequest
0 голосов
/ 14 октября 2019

Я заполняю список набором результатов области.

При навигации по этому списку открывается новое представление, а затем автоматически закрывается это представление.

Использование структуры не представляет проблемы.

Почему автоматически закрывается второй вид?

У меня есть запись экрана, но я не могу опубликовать здесь.

import SwiftUI
import Combine

struct TestStruct:Identifiable{

    let id = UUID()
    let firstname: String
}

extension TestStruct {
    static func all() -> [TestStruct]{
        return[
            TestStruct(firstname: "Joe"),
            TestStruct(firstname: "Jane"),
            TestStruct(firstname: "Johns")
        ]
    }
}

struct TestListView: View {
    let realmList = Horoscope.getHoroscopes() //Fetches from Realm
    let structList = TestStruct.all()

    var body: some View {
        NavigationView{
            // This owrks
            //            List(structList) { item in
            //                MyItemRow(itemTxt: item.firstname)
            //            }

            //This automatically closes the view
            List(realmList) { item in
                MyItemRow(itemTxt: item.firstname)
            }
            .navigationBarTitle("Charts", displayMode: .automatic)
            .navigationBarItems(trailing: EditButton())
        }
    }
}


struct MyItemRow: View {

    var itemTxt:String

    var body: some View {
        NavigationLink(destination: Text("Test")) {
            Text(itemTxt)
        }
    }
}

struct TestListView_Previews: PreviewProvider {
    static var previews: some View {
        TestListView()
    }
}

1 Ответ

0 голосов
/ 14 октября 2019

Я думаю, что ответ можно найти здесь

Короче говоря, не генерируйте id коллекции, в которой итерируется ForEach. Он обнаружит изменение и вернется обратно.

У объекта области есть автоматически сгенерированное свойство id с каждой ссылкой, попробуйте заменить его на согласованный id

...