SwiftUI NavigationLink с кнопкой

У меня есть следующий код, и вид меняется при нажатии в любом месте круглой кнопки. Тем не менееself.user.day += 1действие выполняется, только если я нажимаю непосредственно на текст кнопки. Для меня это очень любопытное поведение, особенно в Swift и SwiftUI.

NavigationLink(destination: NewsView(), tag: 1, selection: $selection){
    Button(action: {self.selection = 1; self.user.day += 1}){
        Text("News").font(.body)
    }
    .frame(width: 100.0, height: 100.0)
    .foregroundColor(Color(red: 0.96, green: 0.96, blue: 0.47))
    .background(Color.black)
    .cornerRadius(90)
}

есть идеи? Благодарность!

1 ответ

Решение

SwiftUI не будет обнаруживать нажатия в пустых областях, независимо от размера вашей кнопки, это исключает NavigationLink.

Простой способ в вашем случае - просто установить рамку для текста вместо кнопки, например

Button(action: { print("tapped"); self.selection = 1 }) {
    Text("News").font(.body)
        .frame(width: 100.0, height: 100.0)
}
    //.frame(width: 100.0, height: 100.0)
    .foregroundColor(Color(red: 0.96, green: 0.96, blue: 0.47))
    .background(Color.black)
    .cornerRadius(90)
Другие вопросы по тегам