Form
/ List
повторно используется UITableView
, и всегда было проблемой изменить индикатор раскрытия tintColor
* См .: Вопрос
Так что неудивительно, что .accentColor
здесь также не будет работать.
В основном предлагалось заменить его на пользовательское представление.
Так что давайте сделаем то же самое в SwiftUI
.
Решение:
struct ContentView: View {
var body: some View {
NavigationView {
Form {
//Overlap NavigationLink and our Custom Cell arrangement
ZStack {
//Create a NavigationLink without the disclosure indicator
NavigationLink(destination: Text("Hello, World!")) {
EmptyView()
}
//Replicate the default cell
HStack {
Text("Custom UI")
Spacer()
Image(systemName: "chevron.right")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: 7)
.foregroundColor(.red) //Apply color for arrow only
}
.foregroundColor(.purple) //Optional: Apply color on all inner elements
}
//Default style
NavigationLink(destination: Text("Hello, World!")) {
Text("Default UI")
}
}
}
}
}
NavigationLink
с EmptyView
избавляет от индикатора раскрытия по умолчанию HStack
- это наша пользовательская ячейка View
который дублирует расположение ячеек по умолчанию Image(systemName: "chevron.right")
- наша замена индикатора диктовки .foregroundColor
позволит нам добавить sh цвет либо на весь HStack
, либо просто Image
(на ваш выбор)
ZStack
позволяет перекрывать два вышеупомянутых. - * * * * * * *
NavigationLink
в основном делает всю ячейку соприкасающейся
Результат: