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
。