В приведенном ниже коде я хочу выделить выбранный элемент на боковой панели только словом «Выбрано».
При работе на iPad Air 5-го поколения боковая панель отображается по-разному в предварительном просмотре и в симуляторе:
- В при предварительном просмотре поведение именно то, что мне нужно: слово «Выбранный» указывает на элемент, видимый в подробном представлении (см. рисунок ниже без синей рамки).
- Однако при запуске в симуляторе вокруг выделенного фрагмента виден акцентный прямоугольник (см. рисунок ниже с синей рамкой). Моя цель — удалить этот прямоугольник.
Некоторые вещи, которые я пробовал:
- Замена .listRowBackground(EmptyView()) на .listRowBackground(Collar.clear): безуспешно.
- Использование .accentColor(.clear): не работает (прямоугольник становится белым), и более того, он устарел, поэтому я хочу этого избежать.
- Добавление .tint(.clear) и listItemTint(.clear): нет успех.
- Замена списка на ForEach, но тогда мне приходится заново создавать макет строк, а результат уже не тот.
Кто-нибудь знает, как удалить этот прямоугольник?
Мой код:
Код: Выделить всё
struct MyView: View {
@State private var selected: MyContent?
let list = [MyContent("First"), MyContent("Second"), MyContent("Third")]
var body: some View {
NavigationSplitView {
List(list, selection: $selected) { item in
NavigationLink(value: item) {
HStack {
Text(item.title)
Spacer()
Text(selected == item ? "Selected" : "")
}
.foregroundColor(.primary)
}
.listRowBackground(EmptyView())
}
.scrollContentBackground(.hidden)
.listStyle(.plain)
.background(.yellow)
} detail: {
if let selected {
Text("Detail of \(selected.title)")
}
}
}
}
struct MyContent: Identifiable, Hashable {
let id = UUID()
let title: String
init(_ title: String) {
self.title = title
}
}

Прямоугольник, который я хочу удалить (работает в симуляторе):

Развертывание iOS 16.0 на Xcode 14.
Подробнее здесь: https://stackoverflow.com/questions/738 ... in-sidebar
Мобильная версия