Combine examples

This commit is contained in:
John Holdsworth
2019-07-10 00:37:46 +01:00
parent f5f4d0b3d5
commit 8018d0c2a0
13 changed files with 274 additions and 91 deletions

View File

@@ -10,27 +10,51 @@ import SwiftUI
struct RepositoryListView : View {
@EnvironmentObject private var viewModel: RepositoryListViewModel
@State private var text: String = ""
@ObjectBinding
private(set) var viewModel: RepositoryListViewModel
var body: some View {
NavigationView {
TextField($text,
placeholder: Text("Search reposipories..."),
onCommit: { self.viewModel.search(query: self.text) })
VStack {
HStack {
TextField($viewModel.text,
placeholder: Text("Search reposipories..."),
onCommit: { self.viewModel.search() })
.frame(height: 40)
.padding(EdgeInsets(top: 0, leading: 8, bottom: 0, trailing: 8))
.border(Color.gray, cornerRadius: 8)
.padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16))
Button(action: { self.viewModel.search() }) {
Text("Search")
}
.frame(height: 40)
.padding(EdgeInsets(top: 0, leading: 8, bottom: 0, trailing: 8))
.border(Color.gray, cornerRadius: 8)
.padding(EdgeInsets(top: 0, leading: 16, bottom: 0, trailing: 16))
.border(Color.blue, cornerRadius: 8)
.padding(EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 16))
}
List {
viewModel.errorMessage.map(Text.init)?
.lineLimit(nil)
.multilineTextAlignment(.center)
ForEach(viewModel.repositories.identified(by: \.id)) { repository in
RepositoryView(repository: repository)
NavigationLink(destination:
WebView(url: repository.htmlUrl)
.navigationBarTitle(Text(repository.fullName))
) {
RepositoryView(repository: repository)
}
}
}
}
.navigationBarTitle(Text("Search🔍"))
}
}