- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个包含 WYPopoverController 的应用程序,它在应有的地方工作得很好。我想在两个 Controller 之间添加自定义动画,而不是内置 push/pop。
在包含 FROM 和 TO Controller 的导航 Controller 中,我不做任何与 WYPopoverController 相关的事情,在 FROM 和 TO Controller 中也不做。
我已经实现了导航 Controller 委托(delegate),它非常简单并且是处理实际动画的动画师类。
public class NavigationControllerDelegate: NSObject, UINavigationControllerDelegate {
let animator = Animator()
public func navigationController(navigationController: UINavigationController, animationControllerForOperation operation: UINavigationControllerOperation, fromViewController fromVC: UIViewController, toViewController toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
if operation == UINavigationControllerOperation.Pop {
return self.animator
}
return nil
}
}
动画师类:
class Animator: NSObject, UIViewControllerAnimatedTransitioning {
public func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
return 0.33
}
public func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let toVC = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let fromVC = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
transitionContext.containerView().addSubview(toVC.view)
toVC.view.alpha = 0
UIView.animateWithDuration(self.transitionDuration(transitionContext), animations: { () -> Void in
fromVC.view.transform = CGAffineTransformMakeScale(0.1, 0.1)
toVC.view.alpha = 1
}) { (finished) -> Void in
fromVC.view.transform = CGAffineTransformIdentity
transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
}
}
}
在 FROM Controller 中我初始化导航委托(delegate)
override public func viewDidLoad() {
super.viewDidLoad()
// ... some other code here
self.navigationController?.delegate = NavigationControllerDelegate()
}
一切都会编译并运行,直到我点击(收集)单元格并想移至 TO Controller 为止。那时应用程序崩溃并出现错误: -[CALayer navigationController:animationControllerForOperation:fromViewController:toViewController:]: 无法识别的选择器发送到实例 0x7fc72e53e970
我添加了一个断点,我最终进入了 UINavigationController 的 sizzled_pushViewController:animated:
方法。老实说,我不知道如何处理这个问题。
最佳答案
事实证明,解决方案与 WYPopoverController
无关。显然,从其根 Controller 中设置导航 Controller 委托(delegate)不是它应该完成的方式。我设法重构了我的代码以摆脱上述库,但它仍然因同样的异常而崩溃。
-[CALayer navigationController:animationControllerForOperation:fromViewController:toViewController:]: 无法识别的选择器发送到实例 0x7fc72e53e970
那时我真的很困惑。经过更多的挖掘和拉头发,我得到了可行的解决方案。 我在 Storyboard中初始化了导航 Controller 委托(delegate),所有部分都放在了正确的位置。
关于ios - 在项目中使用 WYPopover 时 UINavigationControllerDelegate 方法调用崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30390524/
我正在开发一个包含 WYPopoverController 的应用程序,它在应有的地方工作得很好。我想在两个 Controller 之间添加自定义动画,而不是内置 push/pop。 在包含 FROM
我是一名优秀的程序员,十分优秀!