这是一个我找不到答案的问题,但我最终在朋友的帮助下找到了答案(下面是我给出的正确答案(。
我想用从GitHub网站下载的JSON创建一个列表,但我找不到如何使列表项可点击,这样用户就可以看到他们正在搜索的存储库。
请注意,这个问题是关于SwiftUI的,而不是iOS编程的Storyboards方法!
答案是使用WebView。主要代码:
import SwiftUI
struct ContentView: View {
@StateObject private var viewModel = ContentViewModel()
var body: some View {
HStack {
TextField("Enter search", text: $viewModel.query)
Button("Search") {
viewModel.fetchRepos()
}
}
List(viewModel.searchResults, id: .id) { item in
VStack(alignment: .leading) {
/* the lines answering to the query start from the Link command and follow until the end */
Link(destination: URL(string: item.htmlUrl)!, label: {
Text(item.fullName)
.font(.headline)
.foregroundColor(.blue)
})
}
}
}
我评论了答案的起点。为了更好地理解代码,以下是API密钥:
import SwiftUI
struct Root: Codable {
let items: [Item]
enum CodingKeys: String, CodingKey {
case items
}
}
struct Item: Identifiable, Codable {
let id: Int
let htmlUrl: String
let fullName: String
enum CodingKeys: String, CodingKey {
case id
case htmlUrl = "html_url"
case fullName = "full_name"
}
}
创建您的可点击列表,让您的用户访问相应的URL,玩得很开心:(
p.S。在这个答案中,URLSession、JSONDecoder和查询处理部分缺失,但它们会使问题复杂化,对这个问题并不重要。你可以在不同的主题中研究它们的堆栈溢出:(
请使用UITableView作为可点击列表视图。
class MyViewController: UIViewController {
override func viewDidLoad() {
tableView.delegate = self
tableView.dataSource = self
}
}