我创建了一个表格视图,然后让用户按下一个单元格,它将转到 ListTavleView
但是现在唯一的问题是每当用户在ListTableView中时没有后退按钮,即使我已经嵌入了导航控制器
而且我希望拳头视图导航栏是小 Headers 第二视图导航栏是大 Headers
以下是我的代码
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showList" {
if let indexPath = tableView.indexPathForSelectedRow {
let items = dataManager.items[indexPath.row]
let controller = (segue.destination as! UINavigationController).topViewController as! ListTableViewController
controller.item = items
controller.navigationItem.leftItemsSupplementBackButton = true
}
}
}
Below is my storybord setup
Navigation bar with no back button
4 回答
您正在将新的NavigationController(比如Nav.B)推送到现有的(Nav.A) .
每个导航控制器保持不同的导航堆栈将viewcontroller添加到Navigation控制器时,后退按钮可见 . 了解更多关于UINavigationController的信息 .
对于您当前的场景,您可以删除第二个导航控制器(我认为这不是必需的)并将直接segue连接到
ListTableViewController
所以这
变
当您需要大型 Headers (可用11)时,您可以在
viewDidLoad()
中添加此行如果只需要此ViewController,请添加
viewWillDisappear()
或viewDidDisappear()
从图像看来,视图控制器似乎被添加为当前视图控制器中的子视图控制器 .
按下一个单元格时不需要嵌入式导航控制器,因为在起始点已经有一个导航控制器,所以不需要创建新的导航控制器 . (如果你提供一个视图控制器,那么你可能需要嵌入导航控制器 . )
所以解决方案是......
如果你使用pushViewController更好,只是得到另一个视图控制器的引用,它总是一个后退按钮,因为你推动导航控制器这里是一个简单的例子:
至于后退按钮,问题在于您的层次结构 . 您是否更改了可能影响目标视图控制器中导航栏的另一个视图控制器中导航栏的左侧项目 .
如果你想在下一个视图上有导航栏后退按钮,那么只需在导航上按下目标视图,它就会显示默认导航后退按钮 . 不,需要任何额外的工作 .
如果你用segue推动viewcontroller,那么就不需要添加以下行
self.navigationController?.pushViewController(controller, animated: true)