segue 样式“替换”后缺少导航栏按钮项
Posted
技术标签:
【中文标题】segue 样式“替换”后缺少导航栏按钮项【英文标题】:Navigation bar button item missing after segue style "Replace" 【发布时间】:2012-12-30 22:26:10 【问题描述】:我正在开发的 iPad 应用使用了 Storyboard 和 segue。当用户单击主视图中的不同单元格时,我试图显示不同的视图控制器。 在参考了不同的教程后,采取的步骤是 -
在Storyboard
、Master View Controller
中,为表格视图创建了静态单元格并添加了 3 个不同的行(即单元格 1、单元格 2、单元格 3)
添加了View Controller
,选中它并附加了Navigation Controller
(Editor
-> Embed In
-> Navigation Controller
)
在Master View
的单元格1 中,我按住Ctrl 键单击Navigation Controller
。
选择Segue Style
“替换”和Destination
“详细拆分”
在 tableView:didSelectRowAtIndexPath 中,添加 [self performSegueWithIdentifier:@"NewViewController" sender:self] 来进行转换。
我看到的结果是详细视图被替换了。
但是导航栏没有栏按钮项Master
。
所以我无法单击Master
按钮,该按钮将显示包含单元格的表格,我可以从中导航到不同的视图。
我已经阅读了许多博客并看到了有关替换 segue 以解决类似问题的评论。然而,似乎没有人在使用故事板和转场时遇到过这个特定问题。
根据我的理解,使用 segues 应该可以帮助我实现我想要的。从那些尝试过这种方法的人那里,任何指向正确方向的指针都会有所帮助。
【问题讨论】:
What have you tried? @Jules 这是我关于 SO 的第一个问题。我希望将来我问的问题会更清楚:) 下面的链接很好地描述了这个问题,我能够完全理解为什么在使用故事板时导航栏项丢失了。查看 oneMhz 的答案 raywenderlich.com/forums/viewtopic.php?f=2&t=1546> 那是您展示的一个非常有趣的链接。我会尽快使用的。谢谢。 这并不重要,@JulesMazur,但是 JSFiddle 究竟如何帮助任何人演示他们的 ios 代码? 【参考方案1】:尝试将Segue Style
从Replace
更改为Push
。它应该可以解决您的问题。
当您将 UIViewController
推送到 UINavigationController
时,它将被添加到堆栈中,您将能够返回:
点击“详细信息”之前的导航控制器堆栈:
Master
您的导航控制器在点击细节并导航更多...:
Master -> Detail (Navigation button is displayed) -> Some other details (Navigation button is displayed) -> And maybe some more (Navigation button is displayed)
当您像以前一样使用Replace
调用新的segue 时,Master
将被替换为Detail
,并且您将无法返回,因为 Master 已被替换并且它不再在堆栈中。
点击“详细信息”之前的导航控制器堆栈:
Master
像您一样使用替换点击详细信息后的导航控制器:
Detail (no navigation button because master was replaced and we don't have nothing more on the stack)
【讨论】:
以上是关于segue 样式“替换”后缺少导航栏按钮项的主要内容,如果未能解决你的问题,请参考以下文章