协助区分 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 的数据源和委托,但没有任何反应

NLP理解层次程光辉:如何引导孩子找到TA人生方向和动力

RxCocoa-observable 正在从 API 发出新数据,但 tableview.rx.items 不显示新数据

如何动态调整tableheaderview的高度

如何把数据从 TDengine 2.x 迁移到 3.x ?

Swifyjson 与 tableview