Кнопки NavigationLink на tvOS с SwiftUI не работают - PullRequest
3 голосов
/ 19 июня 2020

Я пытаюсь создать простой интерфейс навигации на Apple TV с помощью SwiftUI:

,

Насколько я могу судить, мне нужно использовать либо NavigationLink или NavigationLink в сочетании с Button.

Я пробовал несколько реализаций, но ни одна из них не сработала:

        NavigationLink(destination: view2) {
            Image("placeholder").frame(width:400, height: 300)
            Text("Button")
        }

        NavigationLink(destination: view2) {
            Button(action: {print("hey")}) {
                VStack{
                    Image("placeholder").frame(width:400, height: 300)
                    Text("Button")
                }
            }
        }

        Button(action: {print("hi1")}) {
            VStack{
                Image("placeholder").frame(width:400, height: 300)
                Text("Button")
            }
        }.background(NavigationLink(destination: view2) { Text("hi2") })



         NavigationLink(destination: view2) {
            Text("hey")
         }.background(Button(action: {print("hey")}) {
            VStack{
                Image("placeholder").frame(width:400, height: 300)
                Text("Button")
            }
        })

Первые две нельзя выбрать с помощью Magi c Remote: они не будут фокусироваться. Последние просто не переходят к другому виду, когда я нажимаю на них.

Как мне реализовать этот стиль навигации на tvOS с помощью SwiftUI?

1 Ответ

1 голос
/ 19 июня 2020

NavigationLink работает сам по себе, автономно, только на watchOS (это может сбить с толку), во всех других поддерживаемых ОС он должен быть включен в NavigationView для работы, поэтому

в псевдокоде

  NavigationView {
     // ... some code

     NavigationLink(...)   // must be anywhere inside

     // ... other code
  }
...