SwiftUI görünüm içerik düzeni beklenmedik bir şekilde pop / atlar görünüyor?


16

Bir form veya liste (gruplandırılmış) ile yeni bir görünüme giderken, içerik gezinme görünümü başlığının altından yaklaşık dörtte biri kadar görünür, ardından yaklaşık yarım saniye sonra doğru konuma "açılır". Çok çirkin. Bu bir SwiftUI hatası mı yoksa yanlış bir şey yapılandırıyorum emin değil misiniz?

Bunu hem simülatörde hem de cihazda aynı sonuçlarla test ettim.

Im navigasyon bağlantıları ele nasıl bir şey olduğunu düşünüyorum? ContentView görüntülendiğinde, her gezinme bağlantısı hedef görünümünde init () yöntemini çağırır. Bana göre bu bir anlam ifade etmiyor, hedef init () sadece bir kullanıcının gerçekten navigasyon bağlantısını tıkladığı andan itibaren çağrılmamalı mı?

Ben de bir sayfa ile bu denedim ve sorun sadece formları veya gruplandırılmış stilleri listeleri ile gezinme bağlantıları kullanırken sayfalarda yok.

Yepyeni bir tek görünüm uygulamasından kod:

struct ContentView: View {

    var body: some View {
        NavigationView {
            NavigationLink(destination: TestView()) {
                Text("Test Link")
            }
        .navigationBarTitle("Content View")
        }
    }

}

struct TestView: View {

    var body: some View {
        Form {
            Text("Test View")
        }
        .navigationBarTitle("Test View")
    }

}

Yanıtlar:


10

Başlık metni içeren bir bölümün sağlanması, metin boş olsa bile sorunu düzeltir. Bu, gezinti başlığı ve ilk satır arasında bir boşluk bırakacaktır.

Gruplandırılmış stilize edilmiş Formlar ve Listelerle çalışır.

struct TestView: View {

    var body: some View {
        Form {
            Section(header: Text("")) {
                Text("Test View")
            }
        }
        .nvigationBarTitle("Test View")
    }
}

Bu yazıdaki her iki çözümü de denedim, hala oluyor. Başka neler olabilir? Çok garip.
Lkabo

0

Bir GroupedListStyle listesinden NavigationLink ile itti bir liste ile bu sorunu vardı. Bunu yaptığınızda, SwiftUI'nin itilen Listeyi gruplandırılmış olarak görüyor gibi görünüyor. Sadece listStyle'ın sıfırlanması bu durumda çalışmalıdır:

List { ... }.listStyle(DefaultListStyle())
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.