SwiftuiTVOS按钮/NavigationLink.focusable()

SwiftuiTVOS按钮/NavigationLink.focusable(),swiftui,tvos,Swiftui,Tvos,我有一个直接的跨平台SwiftUI项目。我在电视操作系统上使用NavigationLink时遇到了困难 (以下所有内容都是伪代码,可能是打字错误) 以这个为例,它非常有效: struct ContentView:View{ var body:一些观点{ 导航视图{ 滚动视图(.horizontal){ HStack{ ForEach(items){item in 导航链接(目的地:详细视图(项目:项目)){ 卡片(项目:项目) } } } } } } } 我的一个要求是,当您在列表中滑动时,背

我有一个直接的跨平台SwiftUI项目。我在电视操作系统上使用
NavigationLink
时遇到了困难

(以下所有内容都是伪代码,可能是打字错误)

以这个为例,它非常有效:

struct ContentView:View{
var body:一些观点{
导航视图{
滚动视图(.horizontal){
HStack{
ForEach(items){item in
导航链接(目的地:详细视图(项目:项目)){
卡片(项目:项目)
}
}
}
}
}
}
}
我的一个要求是,当您在列表中滑动时,背景图像会随着焦点项目的变化而变化

现在,我想做的就是这样。但是在
NavigationLink
上重写
.focusable()
似乎会禁用它的点击操作

struct ContentView:View{
//以商店为中心的商品
@国家私有var currentItem:项目?
var body:一些观点{
导航视图{
滚动视图(.horizontal){
HStack{
ForEach(items){item in
导航链接(目的地:详细视图(项目:项目)){
卡片(项目:项目)
}
//设置高亮显示的项目
.focusable(true){isFocused in
currentItem=项目
}
}
}
}
}
}
}
到目前为止我所尝试的:

我想我可以很聪明,使用动态导航链接,制作一个可聚焦的按钮,为我设置标签。这产生了同样的结果:(

struct ContentView:View{
@国家私有var currentItem:项目?
//存储选择标签
@状态私有变量选择:字符串?=nil
var body:一些观点{
// ...
NavigationLink(目标:详细视图(项目:项目),标记:项目。标题,选择:$selection){
EmptyView()
}
按钮(操作:{selection=item.title}){
卡片(项目:项目)
}
.buttonStyle(PlainButtonStyle())
.focusable(true){isFocused in
currentItem=项目
}
// ...
}
}
**问题**

  • 是否可以在仍调用操作的位置配置
    .focusable()
  • 有没有办法报告当前的重点项目

  • 感谢您在这方面的帮助。这看起来很直截了当,但我已经穷途末路了。

    这是否回答了您的问题?我不这么认为。我需要向ContentView报告当前关注的问题