Skip to content

Commit 6d06966

Browse files
committed
Fixes for navigation issues
1 parent 144b464 commit 6d06966

3 files changed

Lines changed: 33 additions & 34 deletions

File tree

LoopFollow/Alarm/AlarmsContainerView.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,19 @@
44
import SwiftUI
55

66
struct AlarmsContainerView: View {
7+
var onDismiss: (() -> Void)?
8+
79
var body: some View {
810
NavigationStack {
911
AlarmListView()
1012
.toolbar {
13+
if let onDismiss {
14+
ToolbarItem(placement: .navigationBarLeading) {
15+
Button(action: onDismiss) {
16+
Image(systemName: "checkmark")
17+
}
18+
}
19+
}
1120
ToolbarItem(placement: .navigationBarTrailing) {
1221
NavigationLink {
1322
AlarmSettingsView()

LoopFollow/Settings/SettingsMenuView.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ struct SettingsMenuView: View {
1313
// MARK: – Local state
1414

1515
@State private var showingTabCustomization = false
16+
var onDismiss: (() -> Void)?
1617

1718
// MARK: – Observed objects
1819

@@ -108,6 +109,15 @@ struct SettingsMenuView: View {
108109
}
109110
.navigationTitle("Settings")
110111
.navigationDestination(for: Sheet.self) { $0.destination }
112+
.toolbar {
113+
if let onDismiss {
114+
ToolbarItem(placement: .navigationBarTrailing) {
115+
Button(action: onDismiss) {
116+
Image(systemName: "checkmark")
117+
}
118+
}
119+
}
120+
}
111121
.sheet(isPresented: $showingTabCustomization) {
112122
TabCustomizationModal(
113123
isPresented: $showingTabCustomization,

LoopFollow/ViewControllers/MoreMenuViewController.swift

Lines changed: 14 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -261,44 +261,31 @@ class MoreMenuViewController: UIViewController {
261261
}
262262

263263
private func openSettings() {
264-
let settingsVC = UIHostingController(rootView: SettingsMenuView())
265-
let navController = UINavigationController(rootViewController: settingsVC)
264+
let settingsView = SettingsMenuView(onDismiss: { [weak self] in
265+
self?.dismiss(animated: true) {
266+
MainViewController.rebuildTabsIfNeeded()
267+
}
268+
})
269+
let settingsVC = UIHostingController(rootView: settingsView)
266270

267271
let style = Storage.shared.appearanceMode.value.userInterfaceStyle
268272
settingsVC.overrideUserInterfaceStyle = style
269-
navController.overrideUserInterfaceStyle = style
270273

271-
settingsVC.navigationItem.rightBarButtonItem = UIBarButtonItem(
272-
image: UIImage(systemName: "checkmark"),
273-
style: .plain,
274-
target: self,
275-
action: #selector(dismissSettingsModal)
276-
)
277-
settingsVC.navigationItem.rightBarButtonItem?.tintColor = .systemBlue
278-
279-
navController.modalPresentationStyle = .fullScreen
280-
present(navController, animated: true)
274+
settingsVC.modalPresentationStyle = .fullScreen
275+
present(settingsVC, animated: true)
281276
}
282277

283278
private func openAlarmsConfig() {
284-
let alarmsVC = UIHostingController(rootView: AlarmsContainerView())
285-
alarmsVC.title = "Alarms"
286-
let navController = UINavigationController(rootViewController: alarmsVC)
279+
let alarmsView = AlarmsContainerView(onDismiss: { [weak self] in
280+
self?.dismiss(animated: true)
281+
})
282+
let alarmsVC = UIHostingController(rootView: alarmsView)
287283

288284
let style = Storage.shared.appearanceMode.value.userInterfaceStyle
289285
alarmsVC.overrideUserInterfaceStyle = style
290-
navController.overrideUserInterfaceStyle = style
291286

292-
alarmsVC.navigationItem.rightBarButtonItem = UIBarButtonItem(
293-
image: UIImage(systemName: "checkmark"),
294-
style: .plain,
295-
target: self,
296-
action: #selector(dismissModal)
297-
)
298-
alarmsVC.navigationItem.rightBarButtonItem?.tintColor = .systemBlue
299-
300-
navController.modalPresentationStyle = .fullScreen
301-
present(navController, animated: true)
287+
alarmsVC.modalPresentationStyle = .fullScreen
288+
present(alarmsVC, animated: true)
302289
}
303290

304291
private func openRemote() {
@@ -458,13 +445,6 @@ class MoreMenuViewController: UIViewController {
458445

459446
// MARK: - Helpers
460447

461-
@objc private func dismissSettingsModal() {
462-
dismiss(animated: true) {
463-
// Rebuild tabs after settings is dismissed to apply any tab order changes
464-
MainViewController.rebuildTabsIfNeeded()
465-
}
466-
}
467-
468448
private func getMainViewController() -> MainViewController? {
469449
guard let tabBarController = tabBarController else { return nil }
470450

0 commit comments

Comments
 (0)