在TabBar和NavBar中从模态视图转换到下一个VC

时间:2015-11-18 09:47:46

标签: ios swift uitabbarcontroller transitions

我正在使用Swift 2和xcode 7.1.1。

我的应用是基于tabbar +导航栏的应用。

我想做什么: 从我的第一个viewcontroller(CollectionVC)我有一个图像的集合视图(底部的tabbar和顶部的navbar)。当您选择图像时,我会以编程方式转换为modalviewcontroller(ImageZoomVC),允许它们放大图像(无标签栏或导航栏)。从ImageZoomVC我想以编程方式转换到UserProfileVCUserProfileVC应该像第一个视图一样有标签栏和导航栏。导航栏后退按钮还应该将我们带回ImageZoomVC

此工作流程类似于facebook。当您选择图像时,您将转到黑屏,只显示该图像和更多信息。您可以点击图片中标记的任何人,它会在屏幕上显示其个人资料,并将标签栏和导航栏放回原位。

问题: 进入ImageZoomVC后,我无法转换到UserProfileVC而不会丢失标签栏和导航栏。我已经能够以编程方式添加导航栏但没有后退按钮,并且设置后退按钮无法正常工作。此外,没有标签栏。

代码: 从我的CollectionVC开始,我从我的收集单元转换到ImageZoomVC,如下所示:

@IBAction func PhotoButtonPressed(sender: UIButton) {
        let imageZoom = ImageZoomVC()
        imageZoom.showFrom(self.parentView!)
}

以下showFrom函数以模态方式显示ImageZoomVC。此代码位于ImageZoomVC中:

    public func showFrom(viewController: UIViewController) {

    //Some stuff here, edited for length

            viewController.presentViewController(self, animated: false) {
                UIView.animateWithDuration(ImageZoomVC.TransitionAnimationDuration,
                    delay: 0,
                    options: [.BeginFromCurrentState, .CurveEaseInOut],
                    animations: {
                        [weak self] in
                        self?.collectionView.alpha = 1
                        self?.collectionView.transform = CGAffineTransformIdentity
                    },
                    completion: {
                        [weak self] finished in
                        self?.view.userInteractionEnabled = finished
                    }
                )
            }
    }

这是我尝试使用导航栏和tabbar转换到UserProfileVC的代码。这不起作用。它将显示VC,但没有tabbar或后退按钮。

    func userSelected (sender: UIButton) {
         let vc = self.presentingViewController?.storyboard?.instantiateViewControllerWithIdentifier("User Profile") as! UserProfileVC
         let newNav = UINavigationController(rootViewController: vc)
         newNav.navigationBar.barTintColor = UIColor().specialPurple()
         newNav.navigationBar.translucent = false
         self.presentViewController(newNav, animated: true, completion: nil)
    }

一些注释:故事板中不存在ImageZoomVC。它以编程方式调用和实例化。

ImageZoomVC基于来自Github的Agrume,在此处找到: https://github.com/JanGorman/Agrume

我想像facebook一样推动UserProfileVC。这个当前代码从底部呈现。 xCode中无法识别代码pushViewController。

让我知道你的想法。欢迎所有的想法。感谢。

0 个答案:

没有答案