2015-05-27 3 views
2

У меня есть UIPageVIewController и я инициализация контроллеров внутри с помощью ИЭ идентификатора повторного использования:UIViewControllers повторного использования в UIPageViewController

BaseContentViewController *contentViewController = (BaseContentViewController *)[self.storyboard instantiateViewControllerWithIdentifier:self.controllerRestorationIDs[index]]; 

Я заметил, что

если в UIViewController используется повторно, то viewDidLoad является не вызывается в этом контроллере, поэтому любой код, который я хочу исполнять каждый раз, появляется UIViewController.

Например, я хочу менять цвет фона каждый раз, когда он появляется.

Есть ли способ, как prepareForReuse, что UITableViewCell имеет, что я могу поместить этот код?

ответ

1

Я бы положил его в -viewWillAppear :.

+0

Из моих экспериментов, кажется довольно случайным образом, если создается новый контроллер представления или используется тот, который хранится в памяти. Это лишь некоторые функции управления автоматической памятью? Я предполагаю, что если я хочу что-то делать каждый раз, когда он появляется, я должен поместить код в viewWillAppear? – KexAri

+0

Это мое понимание (и опыт), что -instantiateViewControllerWithIdentifier: создаст новый экземпляр при каждом его вызове. Я бы начал с предположения, что это то, что он делает, и то, что вы видите, на самом деле является некоторым другим непониманием кода, который вы написали. –

+0

Если это произошло, то viewDidLoad будет вызываться каждый раз, хотя, нет? Я поставил NSLog в это, чтобы проверить. Иногда это называется, а иногда и нет. – KexAri

0

Существует метод, как prepareForReuse, это -viewWillAppear:: Если вы хотите изменить цвет фона каждый раз, когда появляется ViewController, вы можете setBackgroudColor как:

- (void)viewWillAppear:(BOOL)animated { 
    [super viewWillAppear:animated]; 
    self.view.backgroundColor = [UIColor colorWithRed:arc4random_uniform(256)/255.f 
                green:arc4random_uniform(256)/255.f 
                blue:arc4random_uniform(256)/255.f alpha:1.f 
           ]; 
}