【问题标题】:How Can I add Item to Custom NavigationBarItem in SwiftUI如何在 SwiftUI 中将项目添加到自定义 NavigationBarItem
【发布时间】:2021-03-26 19:37:54
【问题描述】:

我想像这里一样在标题上添加按钮。

我用 SwiftUI NavigationView 做到了这一点。但是,我必须添加 SearchController 并添加 NavigationViewController 作为自定义。

自定义 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()

如何将按钮添加到我在下图中标记的位置?

【问题讨论】:

    标签: swiftui uinavigationcontroller uitabbaritem navigationview


    【解决方案1】:

    我解决了我的问题。 添加自定义导航后,我将 .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")
                            }
                )
            }
            
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2020-06-19
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多