Skip to content

Instantly share code, notes, and snippets.

@bpisano
bpisano / CityView.swift
Created June 18, 2019 09:43
Embedded code in my Weather article on Medium
import SwiftUI
struct CityView : View {
@ObjectBinding var city = City(name: "Chambéry")
var body: some View {
List {
Section(header: Text("Now")) {
CityHeaderView(city: city)
@bpisano
bpisano / CityHeaderView.swift
Created June 18, 2019 09:47
Embedded code in my Weather article on Medium
struct CityHeaderView: View {
@ObjectBinding var city: City
var temperature: String {
guard let temperature = city.weather?.current.temperature else {
return "-ºC"
}
return temperature.formattedTemperature
}
@bpisano
bpisano / CityHourlyView.swift
Created June 18, 2019 09:48
Embedded code in my Weather article on Medium
struct CityHourlyView : View {
@ObjectBinding var city: City
private let rowHeight: CGFloat = 110
var body: some View {
ScrollView(alwaysBounceHorizontal: true, showsHorizontalIndicator: false) {
HStack(spacing: 16) {
ForEach(city.weather?.hours.list ?? []) { hour in
@bpisano
bpisano / CityDailyView.swift
Created June 18, 2019 09:49
Embedded code in my Weather article on Medium
struct CityDailyView : View {
@State var day: DailyWeather
var body: some View {
ZStack {
HStack(alignment: .center) {
Text(day.time.formattedDay)
Spacer()
HStack(spacing: 16) {
@bpisano
bpisano / CityFinder.swift
Created June 18, 2019 09:53
Embedded code in my Weather article on Medium
import SwiftUI
import Combine
import MapKit
class CityFinder: NSObject, BindableObject {
var didChange = PassthroughSubject<CityFinder, Never>()
var results: [String] = [] {
didSet {
@bpisano
bpisano / NewCityView.swift
Created June 18, 2019 09:56
Embedded code in my Weather article on Medium
struct NewCityView : View {
@Binding var isAddingCity: Bool
@State private var search: String = ""
@ObjectBinding var cityFinder: CityFinder = CityFinder()
@EnvironmentObject var cityStore: CityStore
var body: some View {
NavigationView {