Я пытаюсь создать NavigationStack, в котором вместо ссылок есть кнопки.
Хотя я знаю, как сделать текст похожим на кнопку, я не уверен, как придать ему изменяющийся внешний вид кнопки при ее нажатии.
В приведенном ниже коде используются две переменные @State, чтобы можно было уменьшить размер поддельной кнопки. Но со всеми различными перестановками .onTapX я не могу найти правильную вариант для изменения переменных @State при нажатии кнопки.
Спасибо
import SwiftUI
struct MainMenuWithStack: View {
@State var butW : CGFloat = 150
@State var butH : CGFloat = 75
@State var curTG = "--"
var body: some View {
NavigationStack{
VStack(spacing: 5) {
NavigationLink(destination: HomePage()){
Text("Home")
.foregroundStyle(.white)
.font(.title)
.frame(width: butW, height: butH)
.background(.blue)
.cornerRadius(10)
}
}
}
}
}
#Preview {
MainMenuWithStack()
}
Попробуйте .buttonStyle(.borderedProminent)
@BenzyNeez Но я здесь не использую настоящие кнопки. Разве мне не придется следить за взаимодействием пользователей и самому менять ложную кнопку? Кроме того, у меня сложилось впечатление, что я не могу использовать кнопки в стеке навигации. Очевидно, если я ошибаюсь, мне бы хотелось знать
Модификатор .buttonStyle
можно применить к NavigationLink
точно так же, как и к Button
.
Следующее очень близко к стилю в вашем примере:
NavigationStack{
VStack(spacing: 5) {
NavigationLink(destination: HomePage()) {
Text("Home")
.font(.title)
.padding()
}
}
.buttonStyle(.borderedProminent)
}
Вы также можете реализовать свои собственные настройки ButtonStyle
, если хотите инкапсулировать все стили в одном месте. Это позволяет применять разные стили при нажатии кнопки, проверяя значение свойства ButtonStyleConfiguration.isPressed
.
Найдите «SwiftUI ButtonStyle»