【问题标题】:Multiple NavigationControllers in one ViewController一个 ViewController 中的多个 NavigationController
【发布时间】:2017-10-03 18:40:46
【问题描述】:

我有一个使用 SWRevealViewController 创建的滑出式菜单。滑出菜单的每一行都连接到一个 NavigationController。 我希望两个不同的 TableViewController 的两行通过 show segue 连接到同一个 ViewController。

当我从第一个 NavigationController 导航时,ViewController 正常工作,并且在导航栏中设置了单击单元格的描述。

class Details: UIViewController {

var name:String = ""

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = name

    print(name)

}

相反,当我从第二个 NavigationController 导航时,ViewController 不起作用。导航栏没有显示,但是“name”参数被打印出来了。

谁能帮我解决这个问题?

【问题讨论】:

  • 将条件放入 didSelectRowAtIndexPath like(if indexPth.row == 2) 并通过编码导航
  • 我认为您没有使用 PUSH ,您使用 Present 进行导航
  • 解决了您的问题还是仍然面临同样的问题?
  • 我已经消除并重新创建了节目转场,问题似乎已经解决。就我而言,最好的解决方案是将两个不同的导航控制器连接到一个视图控制器以通过 show segue 显示详细信息吗?还是我应该采取其他解决方案?

标签: ios swift xcode uinavigationcontroller storyboard


【解决方案1】:

您可以添加代码并输入索引号。和单元格的标题:

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

    switch (indexPath.row)
    {
    case 2: name = "yourFirstNavigationTitleName"
        break
    case 3: name = "yourSecondNavigationTitleName"
        break
    default: break
    }

}

【讨论】:

    【解决方案2】:

    试试这个看看:

    override func viewDidLoad() {
        super.viewDidLoad()
    
        print(name)
        self.navigationItem.title = name
    
        if let navController = self.navigationController {
          navController.isNavigationBarHidden = false
        } else {
          print("There is no Navigation Controller. You may not be showing this controller using 'navigation push'")
        }
    
    
     }
    

    【讨论】:

      猜你喜欢
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多