From b9d372b86ac61941efeca9eff17e6e717f9da30b Mon Sep 17 00:00:00 2001 From: ChaseChoi Date: Mon, 2 Nov 2020 17:19:58 +0800 Subject: [PATCH 1/2] Adopting API changes --- Weather/Networking/NetworkManager.swift | 15 +++------------ Weather/SceneDelegate.swift | 15 +++++++++------ Weather/View/ContentView.swift | 2 +- Weather/View/DailyWeatherView.swift | 8 ++++---- Weather/View/HeaderView.swift | 2 +- 5 files changed, 18 insertions(+), 24 deletions(-) diff --git a/Weather/Networking/NetworkManager.swift b/Weather/Networking/NetworkManager.swift index 2e0716c..f667a70 100644 --- a/Weather/Networking/NetworkManager.swift +++ b/Weather/Networking/NetworkManager.swift @@ -9,20 +9,11 @@ import SwiftUI import Combine -class NetworkManager: BindableObject { - var didChange = PassthroughSubject() +class NetworkManager: ObservableObject { - var currentWeather = CurrentWeatherViewModel() { - didSet { - didChange.send(self) - } - } + @Published var currentWeather = CurrentWeatherViewModel() - var dailyWeather = DailyWeatherViewModel() { - didSet { - didChange.send(self) - } - } + @Published var dailyWeather = DailyWeatherViewModel() let client = DarkSkyAPIClient() diff --git a/Weather/SceneDelegate.swift b/Weather/SceneDelegate.swift index 8866dd4..c822cc0 100644 --- a/Weather/SceneDelegate.swift +++ b/Weather/SceneDelegate.swift @@ -18,12 +18,15 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). - - // Use a UIHostingController as window root view controller - let window = UIWindow(frame: UIScreen.main.bounds) - window.rootViewController = UIHostingController(rootView: ContentView()) - self.window = window - window.makeKeyAndVisible() + + let contentView = ContentView() + + if let windowScene = scene as? UIWindowScene { + let window = UIWindow(windowScene: windowScene) + window.rootViewController = UIHostingController(rootView: contentView) + self.window = window + window.makeKeyAndVisible() + } } func sceneDidDisconnect(_ scene: UIScene) { diff --git a/Weather/View/ContentView.swift b/Weather/View/ContentView.swift index e093c74..7149669 100644 --- a/Weather/View/ContentView.swift +++ b/Weather/View/ContentView.swift @@ -10,7 +10,7 @@ import SwiftUI import Combine struct ContentView: View { - @State var networkManager = NetworkManager() + @ObservedObject var networkManager = NetworkManager() var body: some View { ZStack { diff --git a/Weather/View/DailyWeatherView.swift b/Weather/View/DailyWeatherView.swift index 614c756..f5f3b14 100644 --- a/Weather/View/DailyWeatherView.swift +++ b/Weather/View/DailyWeatherView.swift @@ -15,7 +15,7 @@ struct DailyWeatherView: View { VStack { HStack { Text("5-Day Forecast") - .color(.gray) + .foregroundColor(.gray) Spacer() }.padding(.leading) @@ -23,14 +23,14 @@ struct DailyWeatherView: View { Divider() .padding([.leading, .trailing]) - ForEach(data.data.identified(by: \.day)) { data in + ForEach(data.data, id: \.day) { data in ZStack { HStack { Text(data.day) Spacer() Text(data.temperatureHigh).padding(8) - Text(data.temperatureLow).color(.gray) - }.padding([.leading, .trailing]) + Text(data.temperatureLow).foregroundColor(.gray) + }.padding([.leading, .trailing]) Image(data.icon) .resizable() diff --git a/Weather/View/HeaderView.swift b/Weather/View/HeaderView.swift index d28587e..d43e2e1 100644 --- a/Weather/View/HeaderView.swift +++ b/Weather/View/HeaderView.swift @@ -14,7 +14,7 @@ struct HeaderView: View { var body: some View { VStack { Text("NEW YORK CITY").font(.title).fontWeight(.light) - Text(data.time).color(.gray) + Text(data.time).foregroundColor(.gray) } } } From 719124cf344aeba090540a25a70b8824940625c6 Mon Sep 17 00:00:00 2001 From: ChaseChoi Date: Mon, 2 Nov 2020 17:35:15 +0800 Subject: [PATCH 2/2] Avoid truncation of temperature text label --- Weather/View/CurrentWeatherView.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Weather/View/CurrentWeatherView.swift b/Weather/View/CurrentWeatherView.swift index 6350b99..e1426c9 100644 --- a/Weather/View/CurrentWeatherView.swift +++ b/Weather/View/CurrentWeatherView.swift @@ -27,6 +27,7 @@ struct CurrentWeatherView: View { Text(data.temperature) .font(.system(size: 150)) .fontWeight(.ultraLight) + .layoutPriority(1) VStack(alignment: .leading) { HStack {