При переходе к новому представлению с формой или списком (сгруппированным) содержимое отображается примерно на четверть пути вниз от нижней части заголовка представления навигации, а затем «всплывает» в правильное место примерно через полсекунды. Очень страшный. Не уверен, что это ошибка SwiftUI или я что-то неправильно структурирую?
Я проверил это на симуляторе и устройстве с одинаковыми результатами.
Я думаю, это как-то связано с тем, как обрабатываются навигационные ссылки? Каждая навигационная ссылка вызывает init () в своем назначении, когда появляется ContentView. Для меня это не имеет смысла, разве назначение init () должно вызываться только в тот момент, когда пользователь фактически щелкает навигационную ссылку?
Я пробовал это также с листом, и проблема не существует с листами, только при использовании навигационных ссылок с формами или списками, стилизованными как сгруппированные.
Код из нового единого приложения:
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")
}
}
У меня была эта проблема со списком, который был выдвинут через NavigationLink из списка GroupedListStyle. Когда вы делаете это, тогда кажется, что SwiftUI также считает выдвинутый список сгруппированным. Просто сбросьте listStyle должен работать в этом случае:
источник