Segue 使用错误的动画和后退按钮未显示 [关闭]
Posted
技术标签:
【中文标题】Segue 使用错误的动画和后退按钮未显示 [关闭]【英文标题】:Segue using wrong animation and back button not showing up [closed] 【发布时间】:2016-02-18 18:07:00 【问题描述】:我在我的项目中使用UINavigationController
内的UITabBarController
。
在这个UINavigationController
里面有一个UICollectionView
。在UICollectionView
中,点击集合中的项目后,应该执行 show segue 以查看某种详细信息页面,您可以从该页面返回或返回具有不同数据的另一个集合 -已应用过滤器。
作为 ios 开发的新手,我很难让事情按我的意愿运行。即使故事板中的所有转场都设置为show
,它们也会作为模态动画进行动画处理(从底部而不是右侧进入)。
也不会出现后退按钮。我在属性检查器中为其设置了文本(我已经知道这些必须在“消失”的视图中)并且还为所有导航项添加了标题……仍然没有显示它们的迹象。
这是我的故事板:
这是我使用的prepareForSegue
:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
if segue.identifier == "showService"
if let indexPath = self.collectionView?.indexPathsForSelectedItems()
let object = serviceData[indexPath.last!.row]
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! ServiceDetailViewController
controller.serviceItem = object
controller.callerItem = self.name
controller.navigationItem.leftItemsSupplementBackButton = true
我在我的收藏视图的collectionView:didSelectItemAtIndexPath:
中触发了segue:
override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
let cell = self.collectionView?.cellForItemAtIndexPath(indexPath)
performSegueWithIdentifier("showService", sender: cell)
【问题讨论】:
【参考方案1】:问题是您的 segue 从导航控制器的子节点(“另一个标题”)运行到 导航控制器。这不是您在导航界面中构建推送/显示 segue 的方式。您需要从导航控制器的子节点运行到另一个子节点,即,例如到您的“标题”视图控制器。因此,如果(假设)您的推送/显示转场从“另一个标题”运行到“标题”,那么当触发该转场时,“标题”视图控制器将被推送到与“另一个标题”相同的导航控制器堆栈上" 视图控制器,因此您将在导航栏和后退按钮中更改标题。
【讨论】:
这也意味着你的代码会发生一些变化,当然,因为你的 segue 的目标视图控制器会有所不同。 感谢您的意见!这是否也意味着,我可以将我的所有观点都“植根于”单个UINavigationController
?
意思和我说的差不多。以上是关于Segue 使用错误的动画和后退按钮未显示 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章