Я хочу иметь NavigationLink между двумя текстовыми элементами в SwiftUI. Объединение их вместе не работает, поскольку Swift, по-видимому, принимает объединяемые элементы только одного типа.
Пример
Ожидаемый результат: ознакомьтесь с нашими Условиями использования, чтобы узнать больше.
Что я пробовал:
Text("Read our ") + NavigationLink("Terms & Conditions") { TermsPage() } + Text(" to learn more.")
Ошибка, которую я получил
Не удается преобразовать значение типа «NavigationLink<Label,TermsPage>» в ожидаемый тип аргумента «Текст».
Я знаю, что вы можете вставлять ссылки в формате Markdown.
Text("Read our [Terms & Conditions](example.com/terms) to learn more.")
Но это откроет веб-страницу, поведение которой нежелательно. У меня есть страница внутри приложения, на которую я хочу перейти. Мне просто нужно, чтобы ссылка была встроена в текст.
@loremipsum Как использовать уценку для открытия просмотров? Это то, что я пытаюсь сделать, но URL-адрес, который вы передаете в уценке, не может открывать представления.
Вы можете открывать представления программно, перехватывая щелчок. Посмотрите в SO, этот точный вопрос задавался несколько раз в последнее время, но, как я уже сказал, код виджета вместе с кодом использует его для открытия подробных представлений для отдельных символов.
вы можете попробовать что-то простое, например этот подход, используя HStack
:
@State var showTerms = false
//....
NavigationStack {
HStack {
Text("Read our")
Text("Terms & Conditions").foregroundColor(.blue)
.onTapGesture { showTerms = true }
Text("to learn more.")
}.fixedSize()
NavigationLink("", destination: TermsPage(), isActive: $showTerms)
}
Вы не можете использовать уценку вместе с другими инструментами для открытия представлений. Код для «кода виджета» имеет достойный образец, он предназначен для виджетов, но концепция очень похожа на уценку.