代码之家  ›  专栏  ›  技术社区  ›  spoax

以编程方式推送到单元格ID用作导航栏名称的新页面

  •  -1
  • spoax  · 技术社区  · 7 年前

    我有一个UITableViewController和一堆单元格。当我单击表中的一个单元格时,我希望能够进入一个新页面,导航标题是所单击单元格的名称。

    带有表视图控制器的第一个页面名为“jobList”,新页面名为“jobInfo”。

    我正在使用Firebase,因此它需要引用存储在Firebase中的单元格ID(我不确定这与我要做的事情有关,但我想我会提到这一点)。

    下面是我用来从单元格ID转到新tableview的代码。

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let job = self.jobs[indexPath.row]
        let jobInfo = page_jobInfo()
        show(jobInfo, sender: job)
        }
    

    在新页面上,在超级视图加载之前,我正在使用此代码

    var job: Job? {
        didSet {
            navigationItem.title = job?.jobName
        }
    }
    

    我的字典是这样的

    class Job: NSObject {
    var id: String?
    var jobBrand: String?
    var jobName : String?
    var jobLevel : String?
    //var director : String?
    init(dictionary: [String: AnyObject]) {
        self.id = dictionary["id"] as? String
        self.jobBrand = dictionary["jobBrand"] as? String
        self.jobName = dictionary["jobName"] as? String
    }
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   matt    7 年前

    你的代码毫无意义。你是说:

    let job = self.jobs[indexPath.row]
    let jobInfo = page_jobInfo()
    show(jobInfo, sender: job)
    

    您正在人工创建一个名为 job 并谎称 sender 在您的呼叫中 show(_:sender:) . 那是错误的说法 self 发件人 无论如何,它已经 无影响 工作 中的属性 jobInfo 查看控制器。

    如果要更改 工作 的属性 工作信息 视图控制器, 必须明确地更改它。例如:

    let jobInfo = page_jobInfo()
    jobInfo.job = // whatever you want `job` to be
    show(jobInfo, sender: self)