diff --git a/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate b/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate
index a001ccfb39779730bf745416ba61e9bc44c765bd..ad14cabc7ee570ecd5be227744104e34ad95f1ae 100644
Binary files a/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate and b/TraccarClient.xcodeproj/project.xcworkspace/xcuserdata/g.makhoul.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/TraccarClient/SettingsViewController/SettingsViewController.swift b/TraccarClient/SettingsViewController/SettingsViewController.swift
index 794db6c710e48a47d6c6b16642e20cb63fea18bc..7cf7ba225fa24dfc1a390d77d8be2e1617c94ff7 100644
--- a/TraccarClient/SettingsViewController/SettingsViewController.swift
+++ b/TraccarClient/SettingsViewController/SettingsViewController.swift
@@ -39,7 +39,10 @@ final class SettingsViewController: KNViewController {
                                                                        value: UserDefaults.standard.string(forKey: "accuracy_preference") ?? "",
                                                                        keyboardType: .default,
                                                                        key: "accuracy_preference")]
-    
+    private var editedTextDefaults: [DefaultsModel] = []
+    private var editedSwitchDefaults: [DefaultsModel] = []
+    private var editedMultiChoicesDefaults: [DefaultsModel] = []
+
     
     var trackingController: TrackingController?
     
@@ -63,31 +66,86 @@ final class SettingsViewController: KNViewController {
         tableView.allowsSelection = false
         tableView.separatorStyle = .none
     }
+    
+    private func isChangesOccured() -> Bool{
+        for defaultItem in textDefaults {
+            if let editedItem = editedTextDefaults.first(where: { $0.key == defaultItem.key }) {
+                if "\(editedItem.value ?? "")" != "\(defaultItem.value ?? "")" {
+                    return true
+                }
+            }
+        }
+        for defaultItem in switchDefaults {
+            if let editedItem = editedSwitchDefaults.first(where: { $0.key == defaultItem.key }) {
+                if "\(editedItem.value ?? "")" != "\(defaultItem.value ?? "")" {
+                    return true
+                }
+            }
+        }
+        for defaultItem in multiChoicesDefaults {
+            if let editedItem = editedMultiChoicesDefaults.first(where: { $0.key == defaultItem.key }) {
+                if "\(editedItem.value ?? "")" != "\(defaultItem.value ?? "")" {
+                    return true
+                }
+            }
+        }
+        return false
+    }
 }
 extension SettingsViewController: CustomHeaderViewDelegate {
     func rightButtonTapped(action: RightButtonAction) {
         view.endEditing(true)
-        alert(confirm: "Yes", destructive: "No", message: "Are you sure you want to change settings?") {
-            for item in self.textDefaults {
-                UserDefaults.standard.setValue(item.value, forKey: item.key)
-            }
-            for item in self.switchDefaults {
-                UserDefaults.standard.setValue(item.value, forKey: item.key)
-            }
-            for item in self.multiChoicesDefaults {
-                UserDefaults.standard.setValue(item.value, forKey: item.key)
-            }
-            if AppDelegate.instance.trackingController != nil {
-                AppDelegate.instance.trackingController = TrackingController()
-                AppDelegate.instance.trackingController?.start()
+        if isChangesOccured() {
+            alert(confirm: "Yes", destructive: "No", message: "Are you sure you want to change settings?") {
+                for item in self.editedTextDefaults {
+                    UserDefaults.standard.setValue(item.value, forKey: item.key)
+                }
+                for item in self.editedSwitchDefaults {
+                    UserDefaults.standard.setValue(item.value, forKey: item.key)
+                }
+                for item in self.editedMultiChoicesDefaults {
+                    UserDefaults.standard.setValue(item.value, forKey: item.key)
+                }
+                if AppDelegate.instance.trackingController != nil {
+                    AppDelegate.instance.trackingController = TrackingController()
+                    AppDelegate.instance.trackingController?.start()
+                }
+                self.dismiss(animated: true)
+                self.navigationController?.popViewController(animated: true)
             }
+        } else {
             self.dismiss(animated: true)
             self.navigationController?.popViewController(animated: true)
         }
     }
     
     func leftButtonTapped(action: LeftButtonAction) {
-        self.navigationController?.popViewController(animated: true)
+        view.endEditing(true)
+        if isChangesOccured() {
+            alert(presentingBy: self, confirm: "Save Changes", destructive: "Discard Changes", message: "You have unsaved changes. What do you want to do?") {
+                for item in self.editedTextDefaults {
+                    UserDefaults.standard.setValue(item.value, forKey: item.key)
+                }
+                for item in self.editedSwitchDefaults {
+                    UserDefaults.standard.setValue(item.value, forKey: item.key)
+                }
+                for item in self.editedMultiChoicesDefaults {
+                    UserDefaults.standard.setValue(item.value, forKey: item.key)
+                }
+                if AppDelegate.instance.trackingController != nil {
+                    AppDelegate.instance.trackingController = TrackingController()
+                    AppDelegate.instance.trackingController?.start()
+                }
+                self.dismiss(animated: true)
+                self.navigationController?.popViewController(animated: true)
+            } _: {
+                self.dismiss(animated: true)
+                self.navigationController?.popViewController(animated: true)
+            }
+
+        } else {
+            self.navigationController?.popViewController(animated: true)
+        }
     }
     
     func logoutRequest() {
@@ -171,27 +229,31 @@ extension SettingsViewController: SettingsTextTableViewCellDelegate,
                                   SettingsSwitchTableViewCellDelegate,
                                   SettingsSegmentTableViewCellDelegate {
     func didUpdateText(model: DefaultsModel) {
-        for (index, item) in textDefaults.enumerated() {
-            if item.key == model.key {
-                textDefaults[index].value = model.value
-            }
-        }
+//        for (index, item) in textDefaults.enumerated() {
+//            if item.key == model.key {
+//                textDefaults[index].value = model.value
+//            }
+//        }
+        editedTextDefaults.append(model)
     }
     
+    
     func didUpdateSwitch(model: DefaultsModel) {
-        for (index, item) in switchDefaults.enumerated() {
-            if item.key == model.key {
-                switchDefaults[index].value = model.value
-            }
-        }
+//        for (index, item) in switchDefaults.enumerated() {
+//            if item.key == model.key {
+//                switchDefaults[index].value = model.value
+//            }
+//        }
+        editedSwitchDefaults.append(model)
     }
     
     func didUpdateSegment(model: DefaultsModel) {
-        for (index, item) in multiChoicesDefaults.enumerated() {
-            if item.key == model.key {
-                multiChoicesDefaults[index].value = model.value
-            }
-        }
+//        for (index, item) in multiChoicesDefaults.enumerated() {
+//            if item.key == model.key {
+//                multiChoicesDefaults[index].value = model.value
+//            }
+//        }
+        editedMultiChoicesDefaults.append(model)
     }
 }
 
diff --git a/TraccarClient/TransactionsViewController/TransactionsViewController.swift b/TraccarClient/TransactionsViewController/TransactionsViewController.swift
index d48846e91822b9d567fc4ec13de1c8db3bd8894b..1591c5cbfbb22ffc67e9627a48a0443850394538 100644
--- a/TraccarClient/TransactionsViewController/TransactionsViewController.swift
+++ b/TraccarClient/TransactionsViewController/TransactionsViewController.swift
@@ -50,16 +50,16 @@ class TransactionsViewController: KNViewController {
         if messages.count > LIMIT {
             messages.remove(at: 0)
         }
-
         transactionViewController?.tableView.reloadData()
+        transactionViewController?.noDataFoundLabel.isHidden = !TransactionsViewController.messages.isEmpty
     }
     
     
     
     class func clearMessages() {
         messages.removeAll()
-
         transactionViewController?.tableView.reloadData()
+        transactionViewController?.noDataFoundLabel.isHidden = !TransactionsViewController.messages.isEmpty
     }
     
     override func viewWillAppear(_ animated: Bool) {
@@ -104,6 +104,7 @@ extension TransactionsViewController: UITableViewDelegate, UITableViewDataSource
 extension TransactionsViewController: CustomHeaderViewDelegate {
     func rightButtonTapped(action: RightButtonAction) {
         TransactionsViewController.clearMessages()
+        noDataFoundLabel.isHidden = !TransactionsViewController.messages.isEmpty
     }
     
     func leftButtonTapped(action: LeftButtonAction) {