【问题标题】:Call a method every time a UIViewController is shown每次显示 UIViewController 时调用一个方法
【发布时间】:2013-03-28 03:40:28
【问题描述】:

我想在每次显示UIViewController 时显示整页图片广告。 我想我必须在 viewDidAppearViewWillAppear 中调用该方法,但它们只被调用一次。

- (void) viewDidAppear:(BOOL)animated{
    [self showAds];
}

- (void) showAds{
    //Do Something
}

每次显示 uiviewcontroller 时我应该怎么做才能调用一个方法(即使它已经创建了)?

【问题讨论】:

  • ViewWillAppear 中的调用方法,每次进入特定视图时都会调用。
  • 请确保在使用视图控制器后,每次关闭它时,都可以通过 viewdiddisappear 进行检查。如果视图正在呈现然后没有被关闭,则不会调用确实出现的视图。希望这对您有所帮助。
  • 当你说“展示”时,你到底是什么意思?从后台回来?或者从导航控制器推送,以模态方式呈现,诸如此类?
  • 当我说显示出来时。比如:解锁 ipad 并打开(再次)应用程序,必须显示添加内容。

标签: ios objective-c uiview uiviewcontroller


【解决方案1】:

每次显示UIViewController时都会调用ViewWillAppear,但在应用返回前台时不会调用。

【讨论】:

  • 我同意。我可以验证这也是行为。
  • 当应用返回前台时,UIVC 上会调用什么方法?
【解决方案2】:

您可以通过以下代码使用通知来实现您的目标, 这种情况特别适用于您的应用处于后台并且用户按下 HOME 按钮来激活它的情况。

仅当您的应用程序在 viewDidLoad 中进入 Forground 时注册通知。

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(handleEnteredBackground)
                                             name: UIApplicationDidBecomeActiveNotification
                                           object: nil];

编写应用程序进入Forground时调用的方法

-(void)handleEnteredBackground
{
    NSLog(@"%s",__FUNCTION__);
    // Your stuff here
}

不要忘记在 viewDidUnload 方法中删除观察者

[[NSNotificationCenter defaultCenter] removeObserver:self];

每次您的应用程序进入Forground时发布新通知

- (void)applicationWillEnterForeground:(UIApplication *)application
{

    [[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationDidBecomeActiveNotification object:nil];
}

【讨论】:

  • 如果我没记错的话,该通知应该会自动发布。
  • 是的@CarlVeazey 我知道,但它是为了知识。只是写错了。
  • 谢谢!它解决了我的问题。但是 viewDidUnload 已被弃用。我应该使用什么?
【解决方案3】:

每次都应该调用 ViewWillAppear。使用:

- (void) viewWillAppear:(BOOL)animated{
    [self showAds];
}

【讨论】:

  • viewWillAppear 在加载 uiviewcontroller 时被调用。假设:用户在视图加载后点击主页按钮。当用户再次进入应用程序时,不会调用 viewWillAppear。测试一下。
  • @marceloquinta viewWillAppear 将在每次将 UIViewController 的视图放入 View Hierarchy 时调用。您点击主页按钮的示例使应用程序“进入睡眠状态”并且与任何事情无关。对于主页按钮示例,请查看 NSApplicationDelegate 文档。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2014-07-11
  • 1970-01-01
相关资源
最近更新 更多