ios - 协助区分 URL 和 Tableview 数据
问题描述
免责声明,新的:我正在开发一个应用程序,为 TableView 中的每个项目提供不同的资源。当用户做出选择时,应用程序会进入一个新的 ViewController。虽然每个 TableView 选择的 viewController 都是相同的,但其中的 URL 按钮应该具有与 tableview 选择相对应的不同 URL。
我无法为每个 tableView 数组编写不同的 URL [第 0 周到第 8 周]。现在,View Controller 中的按钮对于每个 tableview 选择都有相同的 URL。希望我解释得足够清楚,但附上代码。如果需要更多信息,请告诉我。谢谢!
import UIKit
class WeekTableViewController: UITableViewController {
var week = [
"Week 0:",
"Week 1:",
"Week 2:",
"Week 3:",
"Weel 4:",
"Week 5:",
"Week 6:",
"Week 7:",
"Week 8:"]
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return week.count
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedWeek = week[indexPath.row]
performSegue(withIdentifier:"moveToWeekDetail", sender:selectedWeek)
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.text = week[indexPath.row]
return cell
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?){
if let weekViewController = segue.destination as? WeekDetailViewController{
if let selectedWeek = sender as? String{
weekViewController.title = selectedWeek
}
}
}
解决方案
将一周的描述从简单的字符串更改为结构:
/// A struct to hold information about each week
/// Add more properties as needed
struct WeekInfo {
let description: String
let url: URL
}
class WeekTableViewController: UITableViewController {
// It's no longer an array of strings
var week = [
WeekInfo(description: "Week 1", url: URL(string: "https://somewhere.com")!),
WeekInfo(description: "Week 2", url: URL(string: "https://somewhere.com")!),
WeekInfo(description: "Week 3", url: URL(string: "https://somewhere.com")!),
]
// ...
override func prepare(for segue: UIStoryboardSegue, sender: Any?){
if let weekViewController = segue.destination as? WeekDetailViewController{
// Pass the week's info onto the detail view controller
if let selectedWeek = sender as? WeekInfo {
weekViewController.title = selectedWeek.description
weekViewController.week = selectedWeek
}
}
}
}
class WeekDetailViewController: UIViewController {
// Info about the week
var week: WeekInfo!
}
推荐阅读
- laravel - 将 ckeditor 与 laravel 6 集成
- grouping - 在 Cytoscape.js 中将节点分组在一起
- java - 为什么 Kafka 的 seekToBeginning 和 seekToEnd 不能与 assign 一起使用?
- amazon-s3 - 使用 express.js 将大型视频文件上传到 s3
- javascript - React (Redux + Redux Saga) 和 MVC
- android - 如何在 YouTubePlayer 中显示/隐藏字幕
- javascript - 使用两个嵌套循环,在窗口中显示以下行:11 12 13 21 22 23 31 32 33 JavaScript
- python - 如何在 Python 3 中将此嵌套字典转换为一个字典?
- generics - 为具有多个通用边界的函数调用转换参数(带有附加边界的转换)
- swagger - Swagger AccessMode 自动