viewDidLoad запускается до того, как переменные экземпляра получат значения - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть рекламный класс, который имеет переменную экземпляра, которая получит URL баннера:

@interface Advertisement : UIViewController {

}


@property (nonatomic, retain) NSString *image;

Теперь, в моем делегате приложения я инициализирую класс объявления и даю переменную экземпляра "image"значение.

   //setup the ad
    Advertisement *theAdView = [[Advertisement alloc] init];
    theAdView.view.frame = CGRectMake(0.0, self.window.frame.size.height-120.0, 320.0, 76.0);
    theAdView.view.clipsToBounds = YES;
    theAdView.view.tag = AD_TAG;
    NSLog(@"Added the image");
    theAdView.image = theAd.banner;
    theAdView.nid = theAd.nid;
    [self.window addSubview:theAdView.view];
    [self.window bringSubviewToFront:theAdView.view];     

В методе viewDidLoad класса рекламы мне нужно значение" изображения ".Однако я получаю нулевое значение.Похоже, класс инициализируется до того, как он получит шанс получить переменные экземпляра.

Я думаю, что нашел решение раньше, но не могу вспомнить, что именно.Я считаю, что это как-то связано с установкой другой переменной, которая не использует (nonatomic, retain) ... Я не уверен.

1 Ответ

3 голосов
/ 28 сентября 2011

UIViewController загрузит его представление (из nib или вызовет метод loadview, если вы его переопределили), когда вы попытаетесь получить доступ к его свойству 'view'. В вашем случае одним простым результатом будет перемещение строк

theAdView.image = theAd.banner;
theAdView.nid = theAd.nid;

до чего-либо, что обращается к свойству view, например

 theAdView.view.frame = CGRectMake(0.0, self.window.frame.size.height-120.0, 320.0, 76.0);

или лучше было бы принять изображение и nid как свойства в новом инициализаторе

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