【问题标题】:Segue using wrong animation and back button not showing up [closed]Segue 使用错误的动画和后退按钮未显示 [关闭]
【发布时间】: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)
}

【问题讨论】:

    标签: iphone swift animation ios9 uistoryboardsegue


    【解决方案1】:

    问题是您的 segue 从导航控制器的子节点(“另一个标题”)运行到 导航控制器。这不是您在导航界面中构建推送/显示 segue 的方式。您需要从导航控制器的子节点运行到另一个子节点,即,例如到您的“标题”视图控制器。因此,如果(假设)您的推送/显示转场从“另一个标题”运行到“标题”,那么当触发该转场时,“标题”视图控制器将被推送到与“另一个标题”相同的导航控制器堆栈上" 视图控制器,因此您将在导航栏和后退按钮中更改标题。

    【讨论】:

    • 这也意味着你的代码会发生一些变化,当然,因为你的 segue 的目标视图控制器会有所不同。
    • 感谢您的意见!这是否也意味着,我可以将我的所有观点都“植根于”单个UINavigationController
    • 意思和我说的差不多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多