如何在watchOS 10中移除VerticalPageTabViewStyle的索引指示器?
问题:VerticalPageTabViewStyle无法控制索引指示器显示状态
环境
- watchOS 10、Xcode 15、SwiftUI 5
代码实现
尝试通过绑定变量控制索引指示器显示状态的代码:
struct PageTwo: View { @Binding var showIndicator: Bool var body: some View { NavigationStack { TabView { setRemindersPage() ReminderPage() } .tabViewStyle(VerticalPageTabViewStyle(indexDisplayMode: showIndicator ? .always : .never)) } } }
运行错误
- 向无参数调用传递了参数
- 无法推断成员'always'的上下文基础
此实现方式在PageTabViewStyle中可正常工作,但在VerticalPageTabViewStyle中失效,请问该如何移除VerticalPageTabViewStyle的索引指示器?
解决方案
VerticalPageTabViewStyle的初始化方法不支持直接传入indexDisplayMode参数,它和PageTabViewStyle的API设计不同。正确的做法是先初始化VerticalPageTabViewStyle,再通过indexDisplayMode(_:)修饰方法来设置索引显示状态。
修改后的代码如下:
struct PageTwo: View { @Binding var showIndicator: Bool var body: some View { NavigationStack { TabView { setRemindersPage() ReminderPage() } .tabViewStyle(VerticalPageTabViewStyle()) .indexDisplayMode(showIndicator ? .always : .never) } } }
这样即可通过绑定变量showIndicator动态切换索引指示器的显示状态:当showIndicator为false时,索引指示器会被隐藏;为true时则始终显示。
内容的提问来源于stack exchange,提问作者Yev M
相关产品推荐
相关产品推荐

