首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >viewWillAppear相关问题

viewWillAppear相关问题
EN

Stack Overflow用户
提问于 2010-03-31 01:17:22
回答 2查看 1K关注 0票数 0

在不给出我所有的代码示例的情况下,我将简要介绍一下。

你们中有没有人在viewWillAppear第一次出现的时候就被调用了?

我对我所有的观点都有这个问题。

例如:当我的应用程序启动时,我会进入主菜单StartView。(调用viewWillAppear)然后我按下一个按钮,它将显示一个导航控制器(调用viewWillAppear)。然后我返回到主菜单(它没有被调用),然后我再次按下相同的导航控制器,它也没有被调用。

如果有人能给我指个地方就太棒了,我已经找了两天了……

另外,如果你需要更多的代码样本,我可以给你一些。

要进一步阅读,请阅读:

这就是我如何调用我的导航控制器:

代码语言:javascript
复制
PremierSoinsAppDelegate *AppDelegate = (PremierSoinsAppDelegate *)[[UIApplication sharedApplication] delegate];

UIView *newView = [AppDelegate.navigationController view];

[newView setFrame:CGRectMake(320.0f, 0.0f, 320.0f, 480.0f)];
[UIView beginAnimations:@"RootViewController" context:nil];
[UIView setAnimationDuration:0.3];
newView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
UIView commitAnimations];

[AppDelegate.window addSubview:newView];
[AppDelegate.window makeKeyAndVisible];

这就是我返回菜单的方式:

代码语言:javascript
复制
PremierSoinsAppDelegate *AppDelegate = (PremierSoinsAppDelegate *)[[UIApplication sharedApplication] delegate];

UIView *newView = [AppDelegate.startViewController view];

newView setFrame:CGRectMake(-320.0f, 0.0f, 320.0f, 480.0f)];
UIView beginAnimations:@"StartViewController" context:nil];
UIView setAnimationDuration:0.3];
newView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
[UIView commitAnimations];

[AppDelegate.window addSubview:newView];
[AppDelegate.window makeKeyAndVisible];

非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-31 01:34:58

您可以在您的导航控制器中实现UINavigationControllerDelegate来向下传播viewWillAppear:消息。您可以像这样实现消息:

代码语言:javascript
复制
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ([viewController respondsToSelector:@selector(viewDidAppear:)]) {
        [viewController viewDidAppear:animated];
    }
}

请注意,这是viewDidAppear而不是ViewWillAppear版本,但它们基本上是相同的。

但是,您应该注意到,您需要这样做的事实可能是控制器/视图代码中有其他错误的迹象,您可能希望重新确定问题,为我们提供更多上下文来回答它。特别地,我假设在你给我们的代码之外的某个地方,你会像通常的导航控制器一样推动和弹出视图控制器。

票数 1
EN

Stack Overflow用户

发布于 2010-03-31 01:22:47

viewWill/DidAppear:只有在使用UINavigationController或UITabBarController (或者实际上是任何系统提供的viewControlller管理类)来操作视图时才会调用。如果您手动执行此操作(就像您在第二个代码片段中所做的那样),这些消息将不会被发送。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2547165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档