我正在使用Swift 2和xcode 7.1.1。
我的应用是基于tabbar +导航栏的应用。
我想做什么:
从我的第一个viewcontroller(CollectionVC
)我有一个图像的集合视图(底部的tabbar和顶部的navbar)。当您选择图像时,我会以编程方式转换为modalviewcontroller(ImageZoomVC
),允许它们放大图像(无标签栏或导航栏)。从ImageZoomVC
我想以编程方式转换到UserProfileVC
。 UserProfileVC
应该像第一个视图一样有标签栏和导航栏。导航栏后退按钮还应该将我们带回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。
让我知道你的想法。欢迎所有的想法。感谢。