Swiftui NavigationLink неожиданно появляется при изменении состоянияIOS

Программируем под IOS
Ответить
Anonymous
 Swiftui NavigationLink неожиданно появляется при изменении состояния

Сообщение Anonymous »

Проблема
Я сталкиваюсь с проблемой в Swiftui, где изменение модели типа значения внутри детей-представления иногда приводит к неожиданному всплеску навигационного стека. Это происходит, хотя я только изменяю свойство внутри ребенка, не заменяю всю модель. Просмотр подробностей позволяет редактировать свойство имени через текстовое поле.import SwiftUI

struct Item: Identifiable, Hashable {
let id: UUID
var name: String
}

struct ContentView: View {
@State private var items = [
Item(id: UUID(), name: "Item 1"),
Item(id: UUID(), name: "Item 2")
]

var body: some View {
NavigationStack {
List($items) { $item in
NavigationLink(item.name, value: item)
}
.navigationDestination(for: Item.self) { item in
DetailView(item: item)
}
}
}
}

struct DetailView: View {
@State var item: Item //
Проблема < /p>
Когда я набираю текстовое поле, представление иногда появляется обратно на предыдущий экран, не нажимая кнопку на спине. Похоже, что навигационный стек теряет трек экземпляра моего элемента, когда его имя обновляется. NavigationDestination проходит копированное значение, а не связывание. Проблема навигационного поп -тона, но ввела осложнения с кодеклевыми, херанными и безопасностью потока. < /li>
< /ul>

Отслежил выбранный элемент отдельно < /li>
< /ol>

Введите opplicit @Strectate Private SelectionM: ITERSTEM? В ContentView. < /p>
< /li>
вручную назначен выбранный элемент до навигации. DetailView должен лишь обновить это поле и не заставлять Swiftui выпадать навигационный стек.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... ying-state
Ответить

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

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

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

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

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