Как узнать, когда удалено дочернее представление UIViewController? - PullRequest
1 голос
/ 20 декабря 2011

Я использую TapJoy SDK для игрового приложения на iOS. В SDK есть способ отобразить представление поверх приложения: http://knowledge.tapjoy.com/integration-8-x/ios/pb/featured-app

Я могу дать функции аргумент UIVIewController, чтобы я мог самостоятельно управлять показом / скрытием.

Я создал следующий UIViewVontroller:

@interface MyViewController : UIViewController

- (void) viewDidLoad;
- (void) viewDidUnload;
- (void) viewWillLoad;
- (void) viewWillUnload;

- (void)viewWillAppear:(BOOL)animated;
- (void)viewDidAppear:(BOOL)animated;
- (void)viewWillDisappear:(BOOL)animated;
- (void)viewDidDisappear:(BOOL)animated;

@end

@implementation MyViewController

- (void) viewDidLoad
{
    self.view = GRAPHIC_SYSTEM::GetGlView();

    NSLog(@"viewDidLoad");
}

- (void) viewDidUnload
{
    NSLog(@"viewDidUnload");
}

- (void) viewWillLoad
{
    NSLog(@"viewWillLoad");
}

- (void) viewWillUnload
{
    NSLog(@"viewWillUnload");
}

- (void)viewWillAppear: (bool)animated
{
    NSLog(@"viewWillAppear");
}

- (void)viewDidAppear:(BOOL)animated
{
NSLog(@"viewDidAppear");    
}

- (void)viewWillDisappear:(BOOL)animated
{
    NSLog(@"viewWillDisappear");
}

- (void)viewDidDisappear:(BOOL)animated
{
    NSLog(@"viewDidDisappear");
}

@end

Когда я получаю уведомление от TapJoy о том, что функциональное приложение доступно, я показываю его, используя свой контроллер вида:

[TapjoyConnect showFeaturedAppFullScreenAdWithViewController: [[MyViewController alloc] init]];

Вид TapJoy успешно отображается в верхней части моей игры.

Есть 2 проблемы:

  1. В консоли печатается только журнал viewDidLoad. Ни одно из других сообщений журнала не печатается
  2. Я хотел бы знать, когда пользователь закрыл представление TapJoy, поэтому я могу добавить некоторую обработку в это время, но никакие другие функции контроллера представления не вызываются.

Я видел здесь на SO, что некоторые пользователи рекомендуют использовать Уведомления. К сожалению, поскольку у меня нет доступа к исходному коду TapJoy SDK, мне нужно найти другой способ.

У вас есть идеи?

Заранее спасибо

Mike

1 Ответ

0 голосов
/ 20 декабря 2011

Что ж, я мог бы решить эту проблему, создав пользовательский UIView, который я установил как представление UIViewController.

Затем я переопределил функцию willRemoveSubview этого пользовательского представления.

И с помощью функции viewDidLoad UIViewController я знаю, когда отображается представление, И когда снимается представление TapJoy, поэтому я тоже могу удалить свой настраиваемый вид.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...