标签: tabview

SwiftUI - 当我在 macOS 上更改选项卡时,为什么 TabView 及其内容有时不刷新?

我正在尝试使用 SwiftUI 在 macOS 上制作一个选项卡式应用程序,但我在TabView.

当我有两个选项卡与TextField每个S和挽救他们的文本状态,各自的私有变量,一个奇怪的现象发生了:当我从切换标签一片乙文本输入到后项卡ATextField,标签指标显示,我还是上选项卡 A,但内容显示选项卡 B的内容。当我再次单击选项卡 B的按钮时,它仍会显示选项卡 B的内容。此外,当我之后按下选项卡 A的按钮时,它会显示选项卡 A的内容,但选项卡的指示器仍然显示我在选项卡 B 上

我可能做错了什么?

这是一个说明我的问题的示例:

import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView
            {
                TabAView()
                    .tabItem({Text("Tab A")})
                TabBView()
                    .tabItem({Text("Tab B")})
        }
    }
}

struct TabAView: View {
    @State private var text = ""
    var body: some View …
Run Code Online (Sandbox Code Playgroud)

ios tabview swift swiftui

10
推荐指数
1
解决办法
2193
查看次数

如何在Primefaces tabView中设置活动选项卡?

我有一个菜单栏,子菜单上有两个项目,两个都调用同一页面:

<p:menubar autoSubmenuDisplay="true">  
   <p:submenu label="Perfil">  
       <p:menuitem value="Editar" url="perfil.xhtml" />  
       <p:menuitem value="Ver" url="perfil.xhtml" />  
   </p:submenu>  
</p:menubar>  
Run Code Online (Sandbox Code Playgroud)

在那个页面中,我有一个带有两个标签的tabview:

<p:tabView dynamic="true">  
    <p:tab id="ver" title="Ver perfil">  
        <ui:include src="verPerfil.xhtml" />    
    </p:tab>  
    <p:tab id="editar" title="Editar perfil">   
    <ui:include src="editarPerfil.xhtml" />  
    </p:tab>  
</p:tabView>  
Run Code Online (Sandbox Code Playgroud)

如何设置活动选项卡,以便每个菜单项激活相应的选项卡?

java menubar primefaces tabview

9
推荐指数
1
解决办法
4万
查看次数

tabview的Active Index未自动更新

Active Index未自动更新.通过将tabView放在可以使用的表单上来回顾一些帖子.或者通过<p:ajax event="tabChange"/>在tabview中包含它是有效的.但似乎没有任何效果

XHTML

示例1:自动更新

    <p:tabView id="categoryTabView" var="promoArticle" value="#{promotionDetailBean.artDTOs}"  activeIndex="#{promotionDetailBean.activeTabIndex}">
            <p:tab id="categoriesTab" title="#{promoArticle.categoryName}">
                <p:dataTable id="promotionDetail_dataTable" var="articlePromo" value="#{promoArticle.artVO}" selection="#{promotionDetailBean.selectedArt}" rowIndexVar="rowIndex">
                    <p:column id="select" selectionMode="multiple" />

                    <p:column id="barCode">
                        <h:inputText id="barCodeInputTxt" value="#{articlePromo.barCode}"
                        styleClass="inputTextStyle" onchange="onSuggestedValueChange('categoryTabView',#{promotionDetailBean.activeTabIndex}, 'promotionDetail_dataTable',#{rowIndex},'originalCostInputTxt')" />
                    </p:column>
                </p:dataTable>
            </p:tab>
        </p:tabView>
Run Code Online (Sandbox Code Playgroud)

示例2:更新tabChange事件

  <h:form id="form">
    <p:growl id="growlm" showDetail="true" />  

            <p:tabView id="categoryTabView" var="promoArticle" value="#{promotionDetailBean.artDTOs}"  >
               <p:ajax event="tabChange" listener="#{promotionDetailBean.tabChanged}"  update=":growlm" />
                    <p:tab id="categoriesTab" title="#{promoArticle.categoryName}">
                        <p:dataTable id="promotionDetail_dataTable" var="articlePromo" value="#{promoArticle.artVO}" selection="#{promotionDetailBean.selectedArt}" rowIndexVar="rowIndex">
                            <p:column id="select" selectionMode="multiple" />

                            <p:column id="barCode">
                                <h:inputText id="barCodeInputTxt" value="#{articlePromo.barCode}"
                                styleClass="inputTextStyle" onchange="onSuggestedValueChange('categoryTabView',#{promotionDetailBean.activeTabIndex}, 'promotionDetail_dataTable',#{rowIndex},'originalCostInputTxt')" />
                            </p:column>
                        </p:dataTable>
                    </p:tab> …
Run Code Online (Sandbox Code Playgroud)

primefaces tabview

9
推荐指数
2
解决办法
3万
查看次数

如何在SwiftUI中为选项卡项目设置动画(选定时)?

如何TabView在SwiftUI中为选中的Tabbar项目设置动画?

例如,给选定的项目一个.scaleEffect()带有.spring()动画或某物的内容,如下所示:

例

到目前为止,这是我尝试过的:

struct MyTabbedView: View {
    @State var enlargeIt1 = false
    @State var enlargeIt2 = true

    var body: some View {
        TabView {
            Text("Item 1")
                .onAppear {
                    self.enlargeIt1.toggle()
                    self.enlargeIt2.toggle()
                }
                .tabItem{
                    VStack{
                        Image(systemName: "music.note")
                            .font(self.enlargeIt1 ? .system(size: 30) : .system(size: 15) )
                            .animation(.interpolatingSpring(mass: 0.7, stiffness: 200, damping: 10, initialVelocity: 4))
                        Text("Music")
                    }
                }.tag(1)

            Text("Item 2")
                .onAppear {
                    self.enlargeIt1.toggle()
                    self.enlargeIt2.toggle()
                }
                .tabItem{
                    VStack{
                        Image(systemName: "music.mic")
                            .font(self.enlargeIt2 ? .system(size: 30) : .system(size: 15) )
                            .animation(.interpolatingSpring(mass: …
Run Code Online (Sandbox Code Playgroud)

tabbar tabview swiftui

9
推荐指数
1
解决办法
469
查看次数

TabBar SwiftUI 2.0 中其他视图的键盘调用 OnAppear

我在 SwiftUI 2.0 和 Xcode 12 中使用 UITabBarController,但似乎键盘盒出现了一些意外行为。正如您从下面的 GIF 中看到的,当键盘出现在第一个选项卡中时,调用了其他 2 个选项卡视图的 OnAppear。这导致了这个问题,因为我有一个写在上面的 API 调用出现。

另外,有什么方法可以关闭 Xcode 12 的默认视图偏移行为。

在此处输入图片说明

这是我的内容视图代码。

struct ContentView: View {
    @State private var index:Int = 0
    var menuItems:[String] = ["Item 1", "Item 2", "Item 3"]
    var body: some View {
        NavigationView(content: {
            ZStack{
                MyTabView(selectedIndex: self.$index)
                    .view(item: self.item1) {
                        NewView(title: "Hello1").navigationBarTitle("")
                            .navigationBarHidden(true)
                    }
                    .view(item: self.item2) {
                        NewView(title: "Hello2").navigationBarTitle("")
                            .navigationBarHidden(true)
                    }
                    .view(item: self.item3) {
                        NewView(title: "Hello3").navigationBarTitle("")
                            .navigationBarHidden(true)
                    }
            }.navigationBarHidden(true)
            .navigationBarTitle("")
        })
    }
    
    var item1:MyTabItem {
        
        var item = …
Run Code Online (Sandbox Code Playgroud)

keyboard uitabbarcontroller tabview swift swiftui

9
推荐指数
1
解决办法
594
查看次数

TabView 内的 SwiftUI iOS 16 NavigationPath 警告:NavigationAuthority

我有一个TabView,每个选项卡都有它自己的NavigationPath,我正在一个ObservableObject.

@MainActor final class Router: ObservableObject {
    @Published var homeNavigationPath = NavigationPath()
    @Published var searchNavigationPath = NavigationPath()
    @Published var notificationsNavigationPath = NavigationPath()
    @Published var profileNavigationPath = NavigationPath()
}
Run Code Online (Sandbox Code Playgroud)

我这样做是为了让每个选项卡都可以自行 PopToRoot。一切似乎都运行良好,但是我在控制台中收到以下消息......

更新 NavigationAuthority 绑定路径尝试每帧更新多次。

有谁知道这意味着什么?我做错了什么还是拥有多个NavigationPath这样的 s 完全没问题吗?

tabview swiftui ios16 navigationpath

9
推荐指数
0
解决办法
1298
查看次数

如何在 SwiftUI 中垂直居中纯文本 TabBar 按钮?

我正在SwiftUIXcode 11.1Swift 5.1iOS 13.1.3)中制作一些TabView按钮。

对于我的TabView,我不想要任何图像——只是文本。这段代码很好地完成了:

import SwiftUI

struct ContentView: View {
    var body: some View {

        TabView {
            Text("The First Tab")
                .tabItem {
                    Text("My Projects")
            }
            Text("Another Tab")
                .tabItem {
                    Text("Augmented Reality")
            }

            Text("The Last Tab")
                .tabItem {
                    Text("Products")
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,文本最终会与标签栏项目的最底部对齐,如下所示: 底部带有标签的标签栏

我想要的是标签栏不要为图标保留空间,而是将文本垂直居中——类似于这个模型:

显示所需布局的选项卡栏模型

我试过把它贴在VStack 中并尝试调整对齐方式,但没有任何改变。

是否有一些聪明的方法可以做到这一点,或者我是否需要通过特定数量的点进行某种偏移?

另外仅供参考,Apple 的开发人员文档说,“选项卡视图仅支持文本、图像或图像后跟文本类型的选项卡项。传递任何其他类型的视图会导致可见但空的选项卡项。

我应该补充一点,我可以使用.offset来调整整个TabView,但这显然不是我们想要的。 .tabItem本身忽略任何.offset …

tabitem tabview swift swiftui

8
推荐指数
1
解决办法
1872
查看次数

SwiftUI TabView 重新排列 Tab 键顺序保留

看起来Apple的TabView支持自动重新排列,但是在单击选项卡后它很快就会失去重新排列。

这是我的游乐场代码。

import SwiftUI
import PlaygroundSupport

struct ContentView: View {
    @State var arr = ["1","2","3","4","5","6"]
    var body: some View {
        TabView {
            ForEach(self.arr, id: \.self) { name in
                Text("Tab \(name) content")
                    .tabItem {
                        Image(systemName: "\(name).square.fill")
                        Text(name)
                    }
            }
        }
        .font(.headline)
    }
}

PlaygroundPage.current.setLiveView(ContentView())
Run Code Online (Sandbox Code Playgroud)

这是我在 gif 中执行的步骤。

  1. 我从选项卡“1”开始
  2. 我转到“更多”选项卡,然后单击“编辑”
  3. 我将选项卡“2”与选项卡“3”交换
  4. 关闭重新排列屏幕
  5. 然后,当我单击选项卡“2”(现在位于位置 3)时,应用程序会将选项卡重置回原来的顺序!

问题演示

我不确定这是否是一个 SwiftUI 错误,或者是否有一个我应该听的 onRearrange 钩子或者什么。

uitabview ios tabview swift swiftui

8
推荐指数
0
解决办法
831
查看次数

SwiftUI 中 TabView 的内容宽度

我正在尝试使用页面样式在 TabView 中添加一些内容插入。是否可以更改 TabView 内容宽度,以便它可以显示下一个和上一个视图的一部分?我可以轻松地使用 HStack 或 ScrollView 来完成此操作,但我想知道是否也可以使用 TabView 来完成此操作,因为 TabView 有许多我在这种情况下需要的功能。

菲格玛设计 我现在拥有什么

我的测试代码如下所示:

var body: some View {
    TabView {
        Group {
            ExcursionView(index: 1, count: 3)
            ExcursionView(index: 2, count: 3)
            ExcursionView(index: 3, count: 3)
        }
        .padding(.horizontal, 20)
    }
    .tabViewStyle(.page)
}
Run Code Online (Sandbox Code Playgroud)

ios tabview swift swiftui

8
推荐指数
0
解决办法
786
查看次数

SwiftUI - 在保持 TabView 可滑动的同时检测长按

我正在尝试检测可滑动的 TabView 上的长按手势。

问题是它目前禁用了 TabView 的可滑动行为。在单个 VStack 上应用手势也不起作用 - 如果我点击背景,则不会检测到长按。

这是我的代码的简化版本 - 它可以复制粘贴到 Swift Playground 中:

import SwiftUI
import PlaygroundSupport

struct ContentView: View {
    @State var currentSlideIndex: Int = 0
    @GestureState var isPaused: Bool = false
    
    var body: some View {
        
        let tap = LongPressGesture(minimumDuration: 0.5,
                                   maximumDistance: 10)
            .updating($isPaused) { value, state, transaction in
                state = value
            }
        
        Text(isPaused ? "Paused" : "Not Paused")
        TabView(selection: $currentSlideIndex) {
            VStack {
                Text("Slide 1")
                Button(action: { print("Slide 1 Button Tapped")}, label: {
                    Text("Button …
Run Code Online (Sandbox Code Playgroud)

gesture tabview swift swiftui swiftui-tabview

7
推荐指数
1
解决办法
212
查看次数