我在XCode中创建了一些展开细分,默认情况下它们会附带一个我不想要的动画。在Stack Overflow中进行了一些搜索后,我确实发现应该有一个复选框可以解开以禁用动画,但是Xcode 7中有一些我无法升级的复选框。如何以编程方式禁用展开segue动画?我目前正在运行XCode 6.4。
答案 0 :(得分:0)
让我们为你<div class="relatively-positioned">
<input id="datetimepicker">
</div>
和你正在解雇FirstController
的人命名控制器。此处还有两种情况:一种是SecondController
以模态方式呈现,另一种以SecondController
方式呈现。
展开segue重置/忽略UINavigationController
,必须调整它。在展开时调用modalPresentationStyle
的{{1}}方法中添加以下内容(我假设您将此方法称为IBAction
):
FirstController
当prepareForUnwind
被解雇为模态时,此部分将起作用。现在,对于两个控制器驻留在- (IBAction)prepareForUnwind:(UIStoryboardSegue *)segue {
//TODO: add right condition if you have to
UIViewController* secondController = (UIViewController*)segue.sourceViewController;
secondController.transitioningDelegate = self;
secondController.modalPresentationStyle = UIModalPresentationCustom;
}
上的情况,SecondController
应该成为其委托:
UINavigationController
这将使UIKit向FirstController
询问动画对象以进行后续转换。现在我们应该修改- (void)viewDidLoad {
self.navigationController.delegate = self;
}
以返回它。
在FirstController
:
FirstController
将相应的代码添加到FirstController.h
,因此会为这两种情况返回一些动画对象(介意评论):
@interface FirstController : UIViewController<UIViewControllerTransitioningDelegate, UINavigationControllerDelegate>
现在实现FirstController.m
。它应该确认- (id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed
{
return [Animator new];
}
- (id<UIViewControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC {
//This will disable ALL animations on particular UINavigationController
//return nil to use default animation when appropriate
return [Animator new];
}
协议。
在Animator
:
UIViewControllerAnimatedTransitioning
在Animator.h
:
@interface Animator : NSObject<UIViewControllerAnimatedTransitioning>
@end
进行回答