Posts

Showing posts with the label navigation

SwiftUi: modal views to the custom navigation framework

Image
After presenting a way to implement custom navigation views in a previous post , now it is time to add the support for modal views. As a demonstration of the concept, I will be showing an ImagePicker modally, using this technique. In a previous post , I have presented a simple framework for achieving navigation, covering some features that lack in the current navigation view of SwiftUI; namely visual customisation and ability to push views or unwind the stack programatically. During this post, I will be exploring even further, adding support for modal views. So to recap, this is how the NavigationStack and NavigationHost classes were looking like at the end of the previous post: final class NavigationStack: ObservableObject { @Published var viewStack: [NavigationItem] = [] @Published var currentView: NavigationItem init(_ currentView: NavigationItem ){ self.currentView = currentView } func unwind(){ ...

SwiftUI: Custom navigation

Image
SwiftUI Custom navigation component motivation: Building a custom navigation component for SwiftUI is a useful addition to SwiftUI community. After the release of SwiftUI, until now (beta 5 of xcode 11), one of the pain points experienced by the Swift developer was the customisation of the navigation bar. Precisely, changing the colour of the bar, the colour or font of the text, the look of the back button seem to be impossible or quite cumbersome tasks. Also navigating programatically is something that you cannot do with the out-of-the-box API provided by Apple. I have seen solutions involving changing the global appearance of the navigation bar: UINavigationBar.appearance().backgroundColor = .green or solutions trying to open the destination of the navigation as modal; however none of those solutions are entirely satisfying my needs while developing an app. They feel like workarounds, rather than fully trustable solutions Therefore, I was thinking about a custom mad...