ios - UITableViewCell 中的 navigationItem.title

标签 ios swift uitableview uinavigationbar uinavigationitem

导航栏标题未根据所选单元格显示。

我在容器 View 内有导航 View Controller 。 容器 View 位于 ViewController 中。

View Controller :

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if segue.identifier == "embedseg" {

        guard let splitViewController = segue.destination as? UISplitViewController,
            let leftNavController = splitViewController.viewControllers.first as? UINavigationController,
            let masterViewController = leftNavController.topViewController as? MasterViewController,
            //let detailViewController = splitViewController.viewControllers.last as? DetailViewController
            let rightNavController = splitViewController.viewControllers.last as? UINavigationController,
            let detailViewController = rightNavController.topViewController as? DetailViewController

            else { fatalError() }

        let firstMonster = masterViewController.monsters.first
        detailViewController.monster = firstMonster

        masterViewController.delegate = detailViewController

        detailViewController.navigationItem.leftItemsSupplementBackButton = true
        detailViewController.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem

        //detailViewController.navigationItem.title = "Hello" <-- tested this, it worked.

        //detailViewController.navigationItem.title = cell.textLabel?.text <-- this didn't work.

        //detailViewController.navigationItem.title = monster.name <-- and this didn't work.                        
    }
}

MasterViewController:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)

    let monster = monsters[indexPath.row]
    cell.textLabel?.text = monster.name

    return cell
}

最佳答案

当您选择单元格时

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

     let cell = tableView.cellForRow(at: indexPath) as! YourCellClassName

     self.performSegue(withIdentifier: "embedseg", sender:cell.textLabel?.text)
}

准备继续

let cellText = sender as! String

detailViewController.navigationItem.title = cellText 

关于ios - UITableViewCell 中的 navigationItem.title,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49465566/

相关文章:

ios - 在此图像上执行某些操作后异步图像加载 - 滚动时图像更改为错误图像

iphone - 每 30 分钟重复间隔一次有问题

ios - UITextField 添加到 UIView 时不响应触摸事件

iphone - UITableView 标题 - iPhone

ios - 添加联系人时重新加载 TableView swift

swift - + 不可用 : Please use explicit type conversions or Strideable methods for mixed-type arithmetics

ios - AvAudioRecorder 在录音刚开始后停止/重启

ios - 如何修复 UIPageViewController 页面中突出显示状态的 UIButton 延迟?

ios - 在通知附件中使用来自 Assets.xcassets 的图像是否有比这更好的方法?

ios - 如何在单元格中保存复选标记附件