У меня есть ForEach внутри списка, где я отображаю текстовое поле аэропорта и время прибытия в виде .compact DatePicker внутри HStack. Когда была iOS18, это работало идеально стабильно и отображало дату в формате дд МММ гггг. С iOS26 все становится совершенно запутанным. Вот мой MRE:
Я пробовал добавить .locale и не мог найти способы отформатировать отображение даты иначе. Я не хочу использовать другие стили выбора (хотя я пробовал). Я читал, что iOS26 будет корректировать форматирование в зависимости от доступного пространства и т. д., поэтому я также попробовал принудительно установить размер .frame, но это не дало никакого эффекта. Я также убедился, что формат даты, передаваемый в DatePicker через $segment.date, согласован.
Я обнаружил, что когда список дат выходит за нижнюю часть экрана (поэтому, когда список комбинаций аэропорт/время длиннее), проблема усугубляется. В этом сценарии я могу очень медленно прокручивать вниз, и форматирование даты остается относительно постоянным: дд МММ гггг. Но при быстрой прокрутке формат даты меняется на дд/ММ/гггг. Я также могу перейти назад и вернуться к этому представлению, и форматирование сбрасывается на дд МММ гггг... И наоборот, когда список комбинаций аэропорт/время короткий (скажем, всего 4), форматирование даты остается дд МММ гггг. Я также обнаружил, что добавление случайных дат приводит к изменению форматирования.
Это очень странное поведение. Могу ли я что-нибудь сделать, чтобы сохранить единообразие форматирования без использования текста для отображения времени? Я хочу сохранить его как DatePicker.
У меня есть ForEach внутри списка, где я отображаю текстовое поле аэропорта и время прибытия в виде .compact DatePicker внутри HStack. Когда была iOS18, это работало идеально стабильно и отображало дату в формате дд МММ гггг. С iOS26 все становится совершенно запутанным. Вот мой MRE: [code]import SwiftUI
struct EditableFlightSegment: Identifiable, Equatable { let id = UUID() var airport: String var time: String var date: Date }
extension Date { static var random: Date { let now = Date() let randomOffset = TimeInterval(Int.random(in: -1_000_000...1_000_000)) return now.addingTimeInterval(randomOffset) } }
var body: some View { NavigationStack { VStack { Button(action: { showSheet = true }, label: { Text("Show List") }) } .sheet(isPresented: $showSheet) { RosterImportView() .presentationSizing( .page .fitted(horizontal: false, vertical: false) .sticky(horizontal: false, vertical: false)) .presentationDragIndicator(.visible) .ignoresSafeArea(.keyboard, edges: .bottom) } } } } [/code] Я пробовал добавить .locale и не мог найти способы отформатировать отображение даты иначе. Я не хочу использовать другие стили выбора (хотя я пробовал). Я читал, что iOS26 будет корректировать форматирование в зависимости от доступного пространства и т. д., поэтому я также попробовал принудительно установить размер .frame, но это не дало никакого эффекта. Я также убедился, что формат даты, передаваемый в DatePicker через $segment.date, согласован. Я обнаружил, что когда список дат выходит за нижнюю часть экрана (поэтому, когда список комбинаций аэропорт/время длиннее), проблема усугубляется. В этом сценарии я могу очень медленно прокручивать вниз, и форматирование даты остается относительно постоянным: дд МММ гггг. Но при быстрой прокрутке формат даты меняется на дд/ММ/гггг. Я также могу перейти назад и вернуться к этому представлению, и форматирование сбрасывается на дд МММ гггг... И наоборот, когда список комбинаций аэропорт/время короткий (скажем, всего 4), форматирование даты остается дд МММ гггг. Я также обнаружил, что добавление случайных дат приводит к изменению форматирования. Это очень странное поведение. Могу ли я что-нибудь сделать, чтобы сохранить единообразие форматирования без использования текста для отображения времени? Я хочу сохранить его как DatePicker.