У меня есть представление, которое иногда используется для просмотра данных, а иногда и для выбора данных.
При использовании для просмотра оно представлено NavigationLink.
Когда используется для выбора данных, он представлен как модальный лист и закрывается установкой логического привязки isPresent в false, поэтому я могу использовать функцию листа onDismiss.
Однако в режиме просмотра мне нужен способ пропустить инициализацию логического привязки isPresent. Правильный способ - это необязательный аргумент в представлении init (), но все, что я пробую, выдает ошибку.
Так я называю это для просмотра данных:
NavigationLink(destination:BrowseOrSelectView(selMode:SelModes.browse)) {
Text("Browse")
}
Это способ, которым я называю это для выбора данных:
.Sheet(isPresented: self.$isPresented, onDismiss:{...}) {
BrowseOrSelectView(selMode: SelModes.selection, isPresented: self.$isPresented)
}
Это представление:
struct BrowseOrSelectView: View {
@State var selMode:SelModes
@Binding var isPresented:Bool
public init(selMode: SelModes, isPresented:(Binding<Bool>)? = true) {
UITableView.appearance().separatorStyle = .none
_selMode = State(initialValue: selMode)
}
...
}
Выдается ошибка:
Невозможно преобразовать значение введите 'Bool' в ожидаемый тип аргумента Binding Bool