协助区分 URL 和 Tableview 数据
Posted
技术标签:
【中文标题】协助区分 URL 和 Tableview 数据【英文标题】:Assistance with differentiating URLs and Tableview Data 【发布时间】:2020-05-07 15:49:47 【问题描述】:免责声明,新的:我正在开发一个应用程序,为 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
【问题讨论】:
【参考方案1】:将一周的描述从简单的 String 改为 struct:
/// 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!
【讨论】:
以上是关于协助区分 URL 和 Tableview 数据的主要内容,如果未能解决你的问题,请参考以下文章
在 ViewController 中设置了 TableView 的数据源和委托,但没有任何反应
RxCocoa-observable 正在从 API 发出新数据,但 tableview.rx.items 不显示新数据