SwiftUI-創(chuàng)建TabView

簡(jiǎn)單tabView使用
1、點(diǎn)擊第一個(gè)頁面,角標(biāo)數(shù)逐次加1
2、再次點(diǎn)擊第一個(gè)tabItem,tabitem角標(biāo)置零消失
3、點(diǎn)擊其他tabItem,正常換頁面,但是不會(huì)影響第一個(gè)頁面角標(biāo)
??注意:badge是在iOS15.0之后才支持

第一個(gè)頁面
點(diǎn)擊第一個(gè)頁面,角標(biāo)加1
第二個(gè)頁面
第三個(gè)頁面
struct MenuVC: View {
    
    @State private var selectedTab = 0
    @AppStorage("num") var num:Int = 0
    
    var body: some View {
        
        let selection = Binding<Int>(
            get: { self.selectedTab },
            set: { self.selectedTab = $0
                print("Pressed tab: \($0)")
                if self.selectedTab == 0 {
                    num = 0
                }
            })
        
        TabView(selection: selection) {
            one()
                .tabItem {
                    Group{
                        Text("phone")
                        Image(systemName: "phone")
                    }
                }.badge(num)
                .tag(0)
                
            two()
                .tabItem {
                    Text("message")
                    Image(systemName: "message")
                }.onTapGesture {
                    num += 1
                }
                .tag(1)

            three()
                .tabItem {
                    Text("person")
                    Image(systemName: "person")
                }.tag(2)
        }
        
    }
}
struct one : View {
    
    @AppStorage("num") var num:Int = 0
    var body: some View {
        
        ZStack {
            Color.red
            
            Image(systemName: "phone")
                .resizable()
                .scaledToFit()
                .frame(width: 100, height: 100)
                .foregroundColor(.white)
            Text("\(num)").offset(x: 0, y: 100)
                .foregroundColor(.white)
                .font(.largeTitle)
        }.onTapGesture {
            num += 1
        }
    }
}
struct two : View {
    
    var body: some View {
        
        ZStack {
            Color.blue
            
            Image(systemName: "message")
                .resizable()
                .scaledToFit()
                .frame(width: 100, height: 100)
                .foregroundColor(.white)
        }
    }
}
struct three : View {
    
    var body: some View {
        
        ZStack {
            Color.green
            
            Image(systemName: "person")
                .resizable()
                .scaledToFit()
                .frame(width: 100, height: 100)
                .foregroundColor(.white)
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容