Convert UIKit to SwiftUI for macOS and iOS

Job ID: 33888800

Budget: €8 – €30 EUR

This project requires the use of Swift5 and SwiftUI; to create one project consisting of two run-targets, one for for macOS (13.3) and one for iOS (14). This is a multi-platform project.

My App:
* 17 swift files total
* Convert from UIKit to SwiftUI, and make cross-platform
* create one target for macOS, one target for iOS
* create 3 folders for the code+files (entitlements, Info.plist, storyboard): iOS, macOS and a "shared" folder

The objective of this project is to have a macOS+iOS app using SwiftUI.
https://developer.apple.com/xcode/swiftui/


Data Model
* 3 Swift files
* The Data Model files import UIKit) so they aren't cross-platform -> create correct Swift classes (remove any mention of UIKit)

UI
* 1 Storyboard, with 10 scenes
* 14 Swift files, including:
* UITableViewController
* UITableViewCell
* UIViewController
* UIButton
* UISegmentedControl
* Preference Panel (iOS Settings.bundle)

WHAT THE APP DOES:
The app starts is in viewer mode; to view rooms (with image).
When a room is selected, show a list of devies (in this room).
Devices can be managed (on/off) from the room view.
The setup mode is currentlty in an extra menu; there may be a simpler way to do this?
Setup: the user can add/remove rooms (with image)
Setup: the user can add/remove devices (device type from a list; and enter the device addess)
use UserDefaults.standard. to store all data (rooms, devices, and their address)

TODO:
The UI files would be replaced with a hierarchy of SwiftUI Views. There may also a discussion about a better way to store the data, locally? With the changes to the Data Model, this is basically a complete rewrite of the app...

TODO: have three custom cells
for a light (with a toggle on-off)
two shutter buttons for up/down (press once, button stays active. make in-active with second press, or after 3 seconds timeout)
for a dimmer light (with on-off, and percentage slider)

Update KNX App to Xcode 13
*all Views and TableCella are setup for PreviewProvider

for iOS the Settings.bundle is OK to use
for macOS a preferences view must be created (rough sample provided)
Related categories: Swift