Version 2.3.1
Well time flies!
I’ve just uploaded version 2.3.1 to the App Store for review and then testing. It’s been a bit of a ride so far.
Like I mentioned previously, the codebase for NetScore is an amazingly engineered example of how app were written back before extensive SDK libraries and third party packages. A really good example of this is UINavigationController. This is a core controller of iOS that handles view presentation and dismissal. It’s a fairly lightweight SDK and is core to the overall iOS app experience.
NetScore doesn’t use UINavigationController, It’s entire navigation control is handled manually.
There is a Banner class that handles the display of the top navigation bar. This includes handling the creation and display of buttons and their associated actions. Depending on what view is presented, changes what banner buttons are activated.
class Banner: UIView {
var backButtonEnabled: Bool = false
var menuButtonEnabled: Bool = false
var plusButtonEnabled: Bool = false
var calendarButtonEnabled: Bool = false
The navigation itself is all manually managed. The view is presented, and then dismissed when needed.
@objc func butMatchplay(_ sender: Any) {
gf.presentVC(MatchSettingsViewController())
}
func presentVC(_ vc: UIViewController) {
vc.modalPresentationStyle = .fullScreen
vc.modalTransitionStyle = .crossDissolve
topMostController().present(vc, animated: true, completion: nil)
}
Manually presenting and dismissing views. It really is amazing and I honestly adore the somewhat complexity of the code. With the complexity though comes a deep control that you start to loose when using more advanced SDK libraries.
Say all this though, we have to move with the times. I’ve created a Version 3 branch and started the transition to using UINavigationController. I feel like it’s a needed step at this stage to keep NetScore relevant and be able to take advantage of new iOS features.
But I digress, the 2.3.1 Version has a graph package update from version 3 to version 5 with a lot of changes to make the package not interfere with Swift Charts even though I won’t be moving to Swift Charts anytime soon. I still want to keep the minimum required iOS version as low as possible.