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

Programmatically push to new page with cell ID being used as navigation bar name

我有一个带有一堆单元格的 UITableViewController。当我单击 table 中的一个单元格时,我希望能够转到一个新页面,并且导航标题是所单击单元格的名称。

带有 table 视图控制器的第一个页面被命名为 "jobList",新页面被命名为 "jobInfo"。

我正在使用 Firebase,因此它需要引用存储在 Firebase 中的单元 ID(不确定这对我正在尝试做的事情是否重要,但我想我会提到这一点)。

这是我用来从单元格 ID 转到新 table视图的代码。

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
}
}

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

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

您人为地创建了一个名为 job 的变量,并在调用 show(_:sender:) 时谎称它是 sender。这是一个错误的说法——selfsender——并且在任何情况下,它对 job属性没有影响jobInfo 视图控制器中。

如果您想更改 jobInfo 视图控制器的 job 属性, 必须明确更改它。例如:

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