gpt4 book ai didi

objective-c - viewWillDisappear 未在自定义 NSViewControllerPresentationAnimator 中调用

转载 作者:行者123 更新时间:2023-12-03 17:10:55 27 4
gpt4 key购买 nike

我在 Cocoa 应用程序中有一个简单的自定义动画器,在使用 NSViewControllerPresentationAnimator 协议(protocol)呈现新 View Controller 时使用它。但是,除非我在删除 View 时手动调用 viewWillDisappear ,并且 viewWillDisappear 不会在被关闭的 View Controller 上调用。

我是否遗漏了一些东西,就像我知道在 iOS 上您需要在转换完成时告诉系统?在协议(protocol)文档中找不到任何相关内容。

这是我今天的实现,如您所见,我手动调用 viewWillDisappear。为什么我需要这样做?

- (void)animateDismissalOfViewController:(NSViewController *)viewController fromViewController:(NSViewController *)fromViewController {

NSView *bottomView = fromViewController.view;
NSView *topView = viewController.view;

topView.wantsLayer = YES;
topView.layerContentsRedrawPolicy = NSViewLayerContentsRedrawOnSetNeedsDisplay;

[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
context.duration = 0.5;
bottomView.animator.alphaValue = 1;
topView.animator.alphaValue = 0;
}
completionHandler:^{
[topView removeFromSuperview];
[viewController viewWillDisappear];
}];

}

最佳答案

您需要使用[viewController removeFromParentViewController]

您无法通过调用 NSViewController 上的 NSView 方法 removeFromSuperview 来触发 NSViewController 生命周期方法查看。您必须使用 NSViewController 方法。

关于objective-c - viewWillDisappear 未在自定义 NSViewControllerPresentationAnimator 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29561941/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com