Мой "viewDidLoad" находится в цикле - PullRequest
0 голосов
/ 02 апреля 2012

Я создал новое приложение для iPad, используя XCode4 и Storyboard.У меня есть несколько (5) различных контроллеров представления.Я создал класс (HomeViewClass), взял один из контроллеров представления и изменил класс на «HomeViewClass», и поместил этот код в метод viewDidLoad.У меня изначально это было в проекте без раскадровки, где он работал идеально ... (он зацикливается, где указано).

allButtons = [NSMutableArray array];
for(int k = 40, m = 0; m < 6; m++, k+= 42)   //  this controls the vertical distance between rows
    for(int i = 0, j=182; i < 7; i++, j+=82) {  //  this controls the size (j) and horizontal distance
        calendarButton *cb= [calendarButton buttonWithType:UIButtonTypeCustom];
        [cb makeFrame:CGRectMake(j, k, 80, 40) number: allButtons.count+1 color:[UIColor orangeColor]];
        //                       x  y   w   h
        [self.view addSubview:cb];  //  <------------------- causing a viewDidLoad loop
        [allButtons addObject:cb];  // put it in the array
    }

Как мне это исправить?

Ответы [ 3 ]

4 голосов
/ 02 апреля 2012

Вы должны кэшировать self.view в локальной переменной и проверить, что вы вызвали [super viewDidLoad] в начале вашего метода:

- (void)viewDidLoad {
    [super viewDidLoad];

    UIView *rootView = self.view;

    for(int k = 40, m = 0; m < 6; m++, k+= 42) {
        for(int i = 0, j=182; i < 7; i++, j+=82) {
            UIButton *cb = [UIButton buttonWithType:UIButtonTypeCustom];

            [rootView addSubview:cb];
        }
    }
}
1 голос
/ 14 августа 2012

Что исправило для меня, так это удаление функции loadView.

1 голос
/ 02 апреля 2012

Сделал проект -> Очистить и теперь он работает.

...