Swiftui: сбросить @state перед повторным рендерингом представленияIOS

Программируем под IOS
Ответить
Anonymous
 Swiftui: сбросить @state перед повторным рендерингом представления

Сообщение Anonymous »

У меня есть это представление, например: < /p>
struct MyChartView: View {
let chart: MyChart
@State private var selectedPoint: Int? = nil

var body: some View {
//... draw chart, set/move selectedPoint by a gesture ...
}
.onChange(of: chart) { selectedPoint = nil }
}

Как сбросить selectedpoint var Когда представление повторно повторно с помощью новой диаграммы и до того, как пройд рендеринговый проход? OnChange триггеры после первого прохода рендеринга, и это вызывает несоответствие, поскольку chart уже содержит новое значение, которое было передано в init () . Я не мог найти никаких подходов к разработке, и из того, что я пробовал, только этот взлом работает:
Введите состояние VAR для HASH и сравнивайте его каждый раз с новым хэшем в Render Pass. Если это не совпадает, пропустите рендеринг: < /p>
@State private var chartHash: Int

var body: some View {
let newChartHash = computeChartsHash(chart)
if newChartHash != self.chartHash {
return
}
...


Подробнее здесь: https://stackoverflow.com/questions/797 ... g-the-view
Ответить

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

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

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

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

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