【发布时间】:2018-10-14 07:39:57
【问题描述】:
我设置了从主视图控制器到详细视图控制器的 segue,但是当它显示时,导航栏与源视图保持相同 - 一个“关闭”按钮和主标题。我期待看到一个“返回”按钮和我正在打开的详细信息屏幕的标题(我在prepareForSegue 中设置了标题)。 Xcode 的编辑器在那里显示一个后退按钮,这显然是通过连接 segue 触发的。
有关设置的更多详细信息:
- 主屏幕是一个导航控制器,里面有一个选项卡控制器。这两个选项卡显示不同的数据,但使用相同的表视图控制器类。
- 每个选项卡都包含一个导航控制器和一个表格视图控制器。
- 每个表视图控制器都有一个到详细视图控制器的 Show segue。
- 当点击特定的表格项时,表格视图控制器会调用
performSegue(withIdentifier:,sender:) - 表视图控制器有
prepareForSegue将数据传递给细节控制器,而且工作正常:数据显示在细节表中。
prepareForSeque 代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
switch segue.identifier {
case SegueID.stringList:
guard let listController = segue.destination as? StringListViewController,
let indexPath = tableView.indexPathForSelectedRow,
let stringListField = model.sections[indexPath.section].fields[indexPath.row/2]
as? ListField<String>
else { break }
listController.strings = stringListField.values
listController.navigationItem.title = stringListField.name
default:
break
}
}
奇怪的是,Xcode 没有显示详细视图的导航项。我尝试将其演示文稿从全屏更改为当前上下文,但这并没有明显的区别。
如何让这个详细视图显示它自己的导航项并显示一个后退按钮?
【问题讨论】:
-
您的设置屏幕截图可能有助于确定问题。另外,你在故事板的 segue 上使用
Show或Show Detail类型吗? -
这是 Show segue 类型。
-
我刚刚看了你的描述,主屏幕是一个导航控制器,里面有一个tabBar控制器,然后每个标签都有自己的导航控制器(总共3个navController)?或者它是一个 tabBarController,每个选项卡都有自己的 navigationController(总共 2 个 navControllers)?
-
已添加屏幕截图。
-
为什么有一个navigationController作为入口屏幕?它的用途是什么?也许摆脱它并让tabBar成为主要入口
标签: ios uinavigationcontroller segue uistoryboardsegue