【问题标题】:Programmatically push to new page with cell ID being used as navigation bar name以编程方式推送到新页面,单元格 ID 用作导航栏名称
【发布时间】:2018-01-26 21:03:33
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 请清楚说明您的问题/问题是什么。怎么了?你想发生什么?
  • 所以我遇到的问题是当我点击我的 tableviewcontroller 上的一个单元格时,我链接到一个新页面。新页面顶部的导航栏标题为空白。我希望导航栏标题与我刚刚点击的单元格名称相同。

标签: ios swift xcode uitableview uinavigationbar


【解决方案1】:

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

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

您正在人为地创建一个名为job 的变量,并在您对show(_:sender:) 的调用中错误地声称它是sender。这是一个错误的声明——selfsender——无论如何,它对jobInfo 视图控制器中的job 属性没有影响

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

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

【讨论】:

  • 感谢马特,现在使用您的最新代码可以正常工作 - 我刚刚将 self.jobs[indexPath.row] 添加到第二行: let jobInfo = page_jobInfo() jobInfo.job = self.jobs[indexPath .row] show(jobInfo, sender: self) ("+1,很好的答案!");
猜你喜欢
  • 1970-01-01
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 2017-08-20
  • 2011-02-20
相关资源
最近更新 更多