Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swiftui 如何将带有侧栏图标的搜索栏添加到导航视图?_Swiftui - Fatal编程技术网

Swiftui 如何将带有侧栏图标的搜索栏添加到导航视图?

Swiftui 如何将带有侧栏图标的搜索栏添加到导航视图?,swiftui,Swiftui,我想在导航栏中添加一个搜索栏,但我不知道如何在同一HStack中使用带有侧栏图标的搜索栏。我用ContentView代码给出了示例屏幕截图。任何帮助都将不胜感激 屏幕截图: struct ContentView: View { @State private var isShowing = false var body: some View { ZStack { if isShowing { SideMenuView(isShowing: $isSh

我想在导航栏中添加一个搜索栏,但我不知道如何在同一
HStack
中使用带有侧栏图标的搜索栏。我用ContentView代码给出了示例屏幕截图。任何帮助都将不胜感激

屏幕截图:

struct ContentView: View {
@State private var isShowing = false
var body: some View {
    ZStack {
        if isShowing {
            SideMenuView(isShowing: $isShowing)
        }
        
        TabView {
            NavigationView {
                HomeView()
                    .navigationBarItems(leading: Button(action: {
                        withAnimation(.spring()) {
                            isShowing.toggle()
                        }
                    } , label: {
                        Image(systemName: "list.bullet")
                    }))
            }
            .tabItem {
                Image(systemName: "1.circle")
                Text("Page 1")
            }
            NavigationView {
                HomeTwoView()
                    .navigationBarItems(leading: Button(action: {
                        withAnimation(.spring()) {
                            isShowing.toggle()
                        }
                    } , label: {
                        Image(systemName: "list.bullet")
                    }))
            }
            .tabItem {
                Image(systemName: "2.circle")
                Text("Page 2")
            }
        }
        .edgesIgnoringSafeArea(.bottom)
        //.cornerRadius(isShowing ? 20 : 0) //<< disabled due to strange effect
        .offset(x: isShowing ? 300 : 0, y: isShowing ? 44: 0)
        .scaleEffect(isShowing ? 0.8 : 1)

    }.onAppear {
        isShowing=false
    }
  } 
 }

ContentView:

struct ContentView: View {
@State private var isShowing = false
var body: some View {
    ZStack {
        if isShowing {
            SideMenuView(isShowing: $isShowing)
        }
        
        TabView {
            NavigationView {
                HomeView()
                    .navigationBarItems(leading: Button(action: {
                        withAnimation(.spring()) {
                            isShowing.toggle()
                        }
                    } , label: {
                        Image(systemName: "list.bullet")
                    }))
            }
            .tabItem {
                Image(systemName: "1.circle")
                Text("Page 1")
            }
            NavigationView {
                HomeTwoView()
                    .navigationBarItems(leading: Button(action: {
                        withAnimation(.spring()) {
                            isShowing.toggle()
                        }
                    } , label: {
                        Image(systemName: "list.bullet")
                    }))
            }
            .tabItem {
                Image(systemName: "2.circle")
                Text("Page 2")
            }
        }
        .edgesIgnoringSafeArea(.bottom)
        //.cornerRadius(isShowing ? 20 : 0) //<< disabled due to strange effect
        .offset(x: isShowing ? 300 : 0, y: isShowing ? 44: 0)
        .scaleEffect(isShowing ? 0.8 : 1)

    }.onAppear {
        isShowing=false
    }
  } 
 }
struct ContentView:View{
@国家私有变量isShowing=false
var body:一些观点{
ZStack{
如果是显示{
SideMenuView(isShowing:$isShowing)
}
TabView{
导航视图{
HomeView()
.navigationBarItems(前导:按钮(操作:{
使用动画(.spring()){
isShowing.toggle()
}
},标签:{
图像(系统名:“list.bullet”)
}))
}
.tabItem{
图像(系统名称:“1.圆圈”)
正文(“第1页”)
}
导航视图{
HomeTwoView()
.navigationBarItems(前导:按钮(操作:{
使用动画(.spring()){
isShowing.toggle()
}
},标签:{
图像(系统名:“list.bullet”)
}))
}
.tabItem{
图像(系统名称:“2.圆圈”)
正文(“第2页”)
}
}
.edgesIgnoringSafeArea(.bottom)

//.cornerRadius(isShowing?20:0)/正如我在评论中提到的,这在SwiftUI(2.0)中还不可能实现。您可以做的是与UIKit集成


与UIKit集成
用法 在我自己的项目中,我使用computed属性过滤内容,这对您也有帮助。以下是我的代码:

var filteredExams: [Exam] {
        examModel.exams.filter({ searchBar.text.isEmpty || $0.examName.localizedStandardContains(searchBar.text)})
    }

截图

正如我在评论中提到的,这在SwiftUI(2.0)中还不可能实现。您可以做的是与UIKit集成


与UIKit集成
用法 在我自己的项目中,我使用computed属性过滤内容,这对您也有帮助。以下是我的代码:

var filteredExams: [Exam] {
        examModel.exams.filter({ searchBar.text.isEmpty || $0.examName.localizedStandardContains(searchBar.text)})
    }

截图

在SwiftUI 2.0中,您还不能将搜索栏添加到导航栏,但您可以与UIKit集成。您如何给出任何想法:)@muhal24:您可以过度添加。@swiftPunk如果可能,您可以解释一下吗?此处解释:在SwiftUI 2.0中,您还不能将搜索栏添加到导航栏,但您可以与UIKit集成。您如何给出任何想法:)@muhal24:您可以添加过多的内容。@swiftPunk如果可能的话,你能解释一下吗?在这里解释一下:Tnx这么多,我会检查一下。当它工作时,我会点击投票。Tnx这么多:)有一个问题:在iOS 13中,搜索文本不会更新。请看这个。因为我使用的是
@StateObject
,我假设他没有考虑iOS 13.0,谢谢你的评论@aheze@muhal24你可以如果它工作正常,请接受它。:@egeeke np.作为旁注,对于iOS 13,您只需将
@StateObject
替换为
@observeobject
。Tnx太多了,我会检查它。当它工作时,我会单击vote.Tnx太多:)有一个问题:在iOS 13中,搜索文本不会更新。请看这个。因为我正在使用
@StateObject
I假设他没有考虑iOS 13.0,谢谢你的评论@aheze@muhal24如果工作正常,您可以接受。:@egeeke np。作为补充说明,对于iOS 13,您只需将
@StateObject
替换为
@observeObject