【发布时间】:2015-09-25 00:38:35
【问题描述】:
我正在执行从 TableViewController(嵌入在 NavigationController 中)到另一个 TableViewController 的 segue(通过情节提要)。即选择一个单元格并呈现另一个 TableView,我想在其上显示所选单元格的文本作为下一个视图标题。
我正在实现这一点,但不是 100% 正确。在第一次初始选择单元格时,未设置 navigationItem 标题。只有当我向后导航并再次通过同一个单元格时,才会设置标题。
第一个 sn-p 是我的第一个 viewController,我正在选择一个单元格,在该单元格上我使用所选单元格标题设置 destinationViewControllers 变量。
var valueToPass:String?
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell #\(indexPath.row)!")
// Get Cell Label
let indexPath = tableView.indexPathForSelectedRow!;
let currentCell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell!;
valueToPass = currentCell.textLabel!.text
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "tripSegue") {
// initialize new view controller and cast it as your view controller
let viewController = segue.destinationViewController as! TripTableViewController
// setting the view controllers property that will store the passed value
viewController.passedValue = valueToPass
}
}
第二个sn-p来自destinationViewController设置navigationItem的标题。
var passedValue: String?
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.title = passedValue
}
【问题讨论】:
-
在导航控制器中 valurEoPass 的设置位置
-
@DavidBerry 我已编辑帖子以反映您的评论。先看sn-p
-
我仍然看不到你在哪里设置 valueToPass(可能在 didSelect...)?
-
抱歉,我的编辑失败。请立即参考。 @大卫贝瑞
-
尝试将
self.navigationItem.title = passedValue移动到 viewController 生命周期的viewDidLoad之前的某个位置,等等,viewWillAppear。
标签: ios swift uitableview segue navigationitem