gpt4 book ai didi

objective-c - 未调用 ParentViewController 的 ViewWillAppear

转载 作者:行者123 更新时间:2023-11-28 20:26:14 26 4
gpt4 key购买 nike

我正在尝试实现自定义 UIActionSheet(由 ViewController 组成)我已将 View Controller 作为 subview 添加到我的 rootView 的导航 Controller

- (IBAction)ShowMenu:(id)sender
{
[self.navigationController.view addSubview:self.menuViewController.view];
[self.menuViewController setTest:YES];
[self.menuViewController viewWillAppear:YES];
}

这里 MenuViewController 有一个 tableview,它有几个选项可供选择。选择后我打开那些各自的 ViewControllers。假设我单击了 menu1,然后打开了 menu1ViewController,它工作正常。现在,当我关闭这个 viewController 时,我调用了 dismissViewController。

在 menuViewController 中,我编写了代码以通过 menuviewController 到底部进行动画处理,它工作正常。

但是 MenuView 的父级是 TestViewController,当 menuviewController 向下动画时,不会调用其中的函数 viewdidAppear。

这就是我的问题,

我正在使用此代码通过 menuViewController 将动画设置为底部

- (void) slideOut {


[UIView beginAnimations:@"removeFromSuperviewWithAnimation" context:nil];

// Set delegate and selector to remove from superview when animation completes
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];

// Move this view to bottom of superview
CGRect frame = self.menusheet.frame;
frame.origin = CGPointMake(0.0, self.view.bounds.size.height);
self.menusheet.frame = frame;

[UIView commitAnimations];
}

// Method called when removeFromSuperviewWithAnimation's animation completes
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
if ([animationID isEqualToString:@"removeFromSuperviewWithAnimation"]) {
[self.view removeFromSuperview];
}
}

菜单 View Controller

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

if(m_test)
{
[self slideIn];
m_test = FALSE;
}
else
{
[self slideOut];
}

}

最佳答案

恕我直言,-[UIViewController viewWillAppear]-[UIViewController viewDidAppear] 只会在那些类似容器的 Controller 将被调用者添加到 View Controller 层次结构中的地方调用,就像一个导航 Controller ,一个标签栏 Controller 。

如果您只是通过在代码中调用 addSubview: 添加 View ,则不会调用它。 See also .

你可以调用 -viewWillAppear-viewDidAppear 在适当的地方,以编程方式在你的代码中,在你调用 addSubview: 之前和之后有或没有动画。

关于objective-c - 未调用 ParentViewController 的 ViewWillAppear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13836963/

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