如何解决如何将 Item 添加到 SwiftUI 中的自定义 NavigationBarItem
我用 SwiftUI NavigationView 做到了这一点。但是,我必须添加 SearchController 并将 NavigationViewController 添加为自定义。
自定义导航视图控制器
searchController 工作正常,但我无法在搜索控制器上方添加按钮。
struct CustomNavigationView: UIViewControllerRepresentable {
let navigationActon = NavigationBarItemActions()
var view: MainView
func makeCoordinator() -> Coordinator {
return CustomNavigationView.Coordinator(parent: self)
}
func makeUIViewController(context: Context) -> UINavigationController {
let childView = UIHostingController(rootView: view)
let controller = UINavigationController(rootViewController: childView)
controller.navigationBar.topItem?.title = "Coming Movie"
controller.navigationBar.prefersLargeTitles = true
let searchController = UISearchController()
searchController.searchBar.placeholder = "Movies"
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.delegate = context.coordinator
controller.navigationItem.rightBarButtonItem = UIBarButtonItem(image: UIImage(systemName: "bell"),style: .plain,target: nil,action: #selector(navigationActon.notificationButtonTapped))//How Can I this button ?
controller.navigationBar.topItem?.hidesSearchBarWhenScrolling = false
controller.navigationBar.topItem?.searchController = searchController
return controller
}
func updateUIViewController(_ uiViewController: UINavigationController,context: Context) {
}
class Coordinator: NSObject,UISearchBarDelegate {
var parent: CustomNavigationView
init(parent: CustomNavigationView) {
self.parent = parent
}
func searchBar(_ searchBar: UISearchBar,textDidChange searchText: String) {
print(searchText)
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
}
}
class NavigationBarItemActions {
@objc func notificationButtonTapped() {
}
}
}
使用
CustomNavigationView(view: MainView())
.ignoresSafeArea()
解决方法
我解决了我的问题。 添加自定义导航后,我将 .navigationBarItems 添加到 MainView。
主视图
struct MainView: View {
@State var searchText: String = ""
var body: some View {
ScrollView {
VStack {
ForEach(0 ..< 555) { item in
NavigationLink(
destination: TextDetailView(),label: {
Text("Hello,World!")
})
}
}
.navigationBarItems(
leading:
Button(action: {}) {
Text("Button 1")
},trailing:
Button(action: {}) {
Text("Button 2")
}
)
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。