Не переключается на другой вид с помощью NavigationLink ⇐ IOS
-
Гость
Не переключается на другой вид с помощью NavigationLink
// // SearchView.swift // Amazon-Prime-Video-SwiftUI // // Создано Беркаем Яшаром 27.10.2023. // импортировать SwiftUI структура SearchView: Просмотр { @StateObject var viewModel = HomePageViewModel() @State var searchtext = "" @StateObject var castModel = ContentDetailViewModel() @State var loadcast: Bool = false @State var loadcastid: Int = 287 var body: some View { НавигацияView{ если searchtext.isEmpty { ZStack(выравнивание: .top) { Черный цвет VStack(интервал: 15) { HStack{ //основной логотип Текст("Найти") .font(.title) .foregroundStyle(.white) .fontWeight(.heavy) Разделитель() //поделиться значком телевизора Изображение (имя системы: «tv.badge.wifi») .изменяемый размер() .frame(ширина: 30, высота: 25) Spacer().frame(ширина: 20) Изображение (имя системы: «person.circle.fill») .изменяемый размер() .frame(ширина: 35, высота: 35) //Профиль пользователя } .padding(.горизонтальный) HStack(интервал: 0) { Кнопка { // Ваше действие здесь } этикетка: { Изображение (имя системы: «лупа») .фон(.белый) .foregroundStyle(.gray) }.padding(.горизонтальный, 7) TextField("Тип", текст: $searchtext) .padding(.вертикальный) .background(Цвет.белый) .foregroundColor(.черный) .colorScheme(.light) .textFieldStyle(PlainTextFieldStyle()) // Применяем PlainTextFieldStyle .multilineTextAlignment(.leading) // Выравнивание текста по левому краю } .фон(.белый) .cornerRadius(15) .padding(.горизонтальный) HStack { Текст("Жанры") .font(.title2) .fontWeight(.heavy) Разделитель() } .padding(.горизонтальный) VStack(интервал: 15) { HStack(интервал: 15) { Кнопка (действие: { // Действие для кнопки "Действие и приключения" }) { Text("Действие и\наприключение") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Текст("Комедия") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для «Действия и приключений» кнопка }) { Текст("Документальный фильм") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Текст("Драма") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для кнопки "Действие и приключения" }) { Текст("Фэнтези") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Текст("Ужас") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для кнопки "Действие и приключения" }) { Текст («Дети») .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Text("Мистика и\nтриллеры") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для «Действия и приключений» кнопка }) { Текст("Романтика") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для «Комедии» кнопка }) { Текст("Научная фантастика") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) } } } } еще { ZStack(выравнивание: .top) { Черный цвет VStack(интервал: 15) { HStack{ //Кнопка назад Кнопка { текст поиска = "" } этикетка: { Изображение (имя системы: «chevron.left») .font(.title2) .fontWeight(.heavy) } Разделитель() //поделиться значком телевизора Изображение (имя системы: «tv.badge.wifi») .изменяемый размер() .frame(ширина: 30, высота: 25) Spacer().frame(ширина: 20) Изображение (имя системы: «person.circle.fill») .изменяемый размер() .frame(ширина: 35, высота: 35) //Профиль пользователя } .padding(.горизонтальный) HStack(интервал: 0) { Кнопка { // Ваше действие здесь } этикетка: { Изображение (имя системы: «лупа») .фон(.белый) .foregroundStyle(.gray) }.padding(.горизонтальный, 7) TextField("Тип", текст: $searchtext) .padding(.вертикальный) .background(Цвет.белый) .foregroundColor(.черный) .colorScheme(.light) .textFieldStyle(PlainTextFieldStyle()) // Применяем PlainTextFieldStyle .multilineTextAlignment(.leading) // Выравнивание текста по левому краю } .фон(.белый) .cornerRadius(15) .padding(.горизонтальный) ScrollView(.vertical, showIndicators: false) { ForEach(viewModel.searchResults) {элемент в if ((item.profile_path?.isEmpty) != ноль) { SearchCard(элементы поиска: элемент) .onTapGesture { Задача { делать { ждут castModel.loadCastProfiles (castid: item.id) print("CASTDATATATA \(String(описание: castModel.searchcastdata))") Навигационная ссылка{ PersonDetailView (приведение: castModel.searchcastdata) } этикетка: { ПустойПросмотр() } } } } } еще { Навигационная ссылка( пункт назначения: ContentDetailView (элементы поиска: элемент), этикетка: { SearchCard(элементы поиска: элемент) } ) } } } } } } } .onChange(of: searchtext) { newValue в viewModel.searchMulti(термин: новое значение) } } } #Предварительный просмотр { ПоискПросмотр() } После получения данных в задаче в разделе SearchCard(searchitems: item) я хочу, чтобы они переместились в другое представление с этими данными. Когда я нажимаю на него, я вижу в выводе консоли, что данные успешно получены, но я не могу использовать эти данные с навигационной ссылкой и переключиться на другое представление. Он также показывает предупреждение «Результат инициализатора NavigationLink не используется» в разделе навигационной ссылки
// // SearchView.swift // Amazon-Prime-Video-SwiftUI // // Создано Беркаем Яшаром 27.10.2023. // импортировать SwiftUI структура SearchView: Просмотр { @StateObject var viewModel = HomePageViewModel() @State var searchtext = "" @StateObject var castModel = ContentDetailViewModel() @State var loadcast: Bool = false @State var loadcastid: Int = 287 var body: some View { НавигацияView{ если searchtext.isEmpty { ZStack(выравнивание: .top) { Черный цвет VStack(интервал: 15) { HStack{ //основной логотип Текст("Найти") .font(.title) .foregroundStyle(.white) .fontWeight(.heavy) Разделитель() //поделиться значком телевизора Изображение (имя системы: «tv.badge.wifi») .изменяемый размер() .frame(ширина: 30, высота: 25) Spacer().frame(ширина: 20) Изображение (имя системы: «person.circle.fill») .изменяемый размер() .frame(ширина: 35, высота: 35) //Профиль пользователя } .padding(.горизонтальный) HStack(интервал: 0) { Кнопка { // Ваше действие здесь } этикетка: { Изображение (имя системы: «лупа») .фон(.белый) .foregroundStyle(.gray) }.padding(.горизонтальный, 7) TextField("Тип", текст: $searchtext) .padding(.вертикальный) .background(Цвет.белый) .foregroundColor(.черный) .colorScheme(.light) .textFieldStyle(PlainTextFieldStyle()) // Применяем PlainTextFieldStyle .multilineTextAlignment(.leading) // Выравнивание текста по левому краю } .фон(.белый) .cornerRadius(15) .padding(.горизонтальный) HStack { Текст("Жанры") .font(.title2) .fontWeight(.heavy) Разделитель() } .padding(.горизонтальный) VStack(интервал: 15) { HStack(интервал: 15) { Кнопка (действие: { // Действие для кнопки "Действие и приключения" }) { Text("Действие и\наприключение") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Текст("Комедия") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для «Действия и приключений» кнопка }) { Текст("Документальный фильм") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Текст("Драма") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для кнопки "Действие и приключения" }) { Текст("Фэнтези") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Текст("Ужас") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для кнопки "Действие и приключения" }) { Текст («Дети») .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для кнопки "Комедия" }) { Text("Мистика и\nтриллеры") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) HStack(интервал: 10) { Кнопка (действие: { // Действие для «Действия и приключений» кнопка }) { Текст("Романтика") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } Кнопка (действие: { // Действие для «Комедии» кнопка }) { Текст("Научная фантастика") .foregroundColor(.white) .frame(maxWidth: .infinity) .frame(высота: 60) .background(Цвет (красный: 51/255, зеленый: 54/255, синий: 61/255)) .cornerRadius(10) .смелый() } }.padding(.горизонтальный) } } } } еще { ZStack(выравнивание: .top) { Черный цвет VStack(интервал: 15) { HStack{ //Кнопка назад Кнопка { текст поиска = "" } этикетка: { Изображение (имя системы: «chevron.left») .font(.title2) .fontWeight(.heavy) } Разделитель() //поделиться значком телевизора Изображение (имя системы: «tv.badge.wifi») .изменяемый размер() .frame(ширина: 30, высота: 25) Spacer().frame(ширина: 20) Изображение (имя системы: «person.circle.fill») .изменяемый размер() .frame(ширина: 35, высота: 35) //Профиль пользователя } .padding(.горизонтальный) HStack(интервал: 0) { Кнопка { // Ваше действие здесь } этикетка: { Изображение (имя системы: «лупа») .фон(.белый) .foregroundStyle(.gray) }.padding(.горизонтальный, 7) TextField("Тип", текст: $searchtext) .padding(.вертикальный) .background(Цвет.белый) .foregroundColor(.черный) .colorScheme(.light) .textFieldStyle(PlainTextFieldStyle()) // Применяем PlainTextFieldStyle .multilineTextAlignment(.leading) // Выравнивание текста по левому краю } .фон(.белый) .cornerRadius(15) .padding(.горизонтальный) ScrollView(.vertical, showIndicators: false) { ForEach(viewModel.searchResults) {элемент в if ((item.profile_path?.isEmpty) != ноль) { SearchCard(элементы поиска: элемент) .onTapGesture { Задача { делать { ждут castModel.loadCastProfiles (castid: item.id) print("CASTDATATATA \(String(описание: castModel.searchcastdata))") Навигационная ссылка{ PersonDetailView (приведение: castModel.searchcastdata) } этикетка: { ПустойПросмотр() } } } } } еще { Навигационная ссылка( пункт назначения: ContentDetailView (элементы поиска: элемент), этикетка: { SearchCard(элементы поиска: элемент) } ) } } } } } } } .onChange(of: searchtext) { newValue в viewModel.searchMulti(термин: новое значение) } } } #Предварительный просмотр { ПоискПросмотр() } После получения данных в задаче в разделе SearchCard(searchitems: item) я хочу, чтобы они переместились в другое представление с этими данными. Когда я нажимаю на него, я вижу в выводе консоли, что данные успешно получены, но я не могу использовать эти данные с навигационной ссылкой и переключиться на другое представление. Он также показывает предупреждение «Результат инициализатора NavigationLink не используется» в разделе навигационной ссылки
Мобильная версия