Я реализую очень пользовательский NavigationLink с именем MenuItem
и хотел бы повторно использовать его в проекте.Это структура, которая соответствует View
и реализует var body : some View
, которая содержит NavigationLink
.Мне нужно как-то сохранить представление, которое должно быть представлено NavigationLink
в теле MenuItem
, но пока не удалось этого сделать.
Я определил destinationView
в теле MenuItem
какsome View
и попробовал два инициализатора:
Это казалось слишком простым:
struct MenuItem: View {
private var destinationView: some View
init(destinationView: View) {
self.destinationView = destinationView
}
var body : some View {
// Here I'm passing destinationView to NavigationLink...
}
}
-> Ошибка: Протокол 'Просмотр' может использоваться только как универсальныйограничение, поскольку оно имеет требования к Self или связанному типу.
2-я попытка:
struct MenuItem: View {
private var destinationView: some View
init<V>(destinationView: V) where V: View {
self.destinationView = destinationView
}
var body : some View {
// Here I'm passing destinationView to NavigationLink...
}
}
-> Ошибка: Невозможно назначить значение типа 'V' для типа 'some View '.
Финальная попытка:
struct MenuItem: View {
private var destinationView: some View
init<V>(destinationView: V) where V: View {
self.destinationView = destinationView as View
}
var body : some View {
// Here I'm passing destinationView to NavigationLink...
}
}
-> Error: Невозможно присвоить значение типа' View 'для типа' some View '.
Надеюсь, кто-нибудь сможет мне помочь.Должен быть способ, если NavigationLink может принимать некоторые View в качестве аргумента.Спасибо; D