【发布时间】:2016-08-20 05:45:24
【问题描述】:
我正在关注 https://github.com/RabbitMC/inbox-replica 以制作 Objective-C 版本的收件箱副本转换,但我被困在无法制作 Objective-C 代码的代码中。
这是 Swift 代码:
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
let duration = transitionDuration(transitionContext)
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)!
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)!
let containerView = transitionContext.containerView()
var foregroundViewController = toViewController
var backgroundViewController = fromViewController
if type == .Dismissing {
foregroundViewController = fromViewController
backgroundViewController = toViewController
}
// get target view
var targetViewController = backgroundViewController
if let navController = targetViewController as? UINavigationController {
targetViewController = navController.topViewController!
}
let targetViewMaybe = (targetViewController as? ExpandingTransitionPresentingViewController)?.expandingTransitionTargetViewForTransition(self)
这是我的 Objective-C 代码:
-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext {
NSTimeInterval duration = [self transitionDuration:transitionContext];
UIViewController *fromViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
UIView *containerView = [transitionContext containerView];
UIViewController *foregroundViewController = toViewController;
UIViewController *backgroundViewController = fromViewController;
if (type == Dismissing) {
foregroundViewController = fromViewController;
backgroundViewController = toViewController;
}
//get the target view
UIViewController *targetViewController = backgroundViewController;
if ([targetViewController isKindOfClass:[UINavigationController class]]) {
UINavigationController *navController = (UINavigationController *)targetViewController;
targetViewController = navController.topViewController;
}
UIView *targetViewMaybe = ([targetViewController conformsToProtocol:@protocol(ExpandingTransitionPresentingViewController)])?[targetViewController expandingTransitionTargetViewForTransition:self]:assert(targetViewMaybe != nil);
现在问题出现在我必须在 targetViewController 上调用协议方法的地方,这是一个 UIViewController,但编译器提示我错误:
UIViewController 没有声明选择器“expandingTransitionTargetViewForTransition”的可见界面
【问题讨论】:
标签: ios objective-c swift animation uiviewcontroller