Представления в ScrollView - PullRequest
       4

Представления в ScrollView

0 голосов
/ 07 ноября 2011

Я пытаюсь создать UIScrollView программно. У меня есть scrollView для этого ViewController. Вот как я это создаю в loadView:

    CGRect fullScreenRect = [[UIScreen mainScreen] applicationFrame];
    self.scrollView = [[UIScrollView alloc] initWithFrame:fullScreenRect];
    self.scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);

Затем я добавляю на него несколько предметов, а затем добавляю его к view в loadView следующим образом:

[self.scrollView addSubview:self.searchBar];
[self.scrollView addSubview:button];
[self.view addSubview:self.scrollView];

Пока все должно быть хорошо. Однако в других функциях я буду добавлять ImageViews, а затем мне нужно будет установить размер содержимого scrollview. Я просто использую [self.scrollView addToSubView:image], и когда я хочу изменить размер содержимого прокрутки, я делаю это следующим образом:

// Calculate scroll view size
float sizeOfContent = 0;
for (int i = 0; i < [self.scrollView.subviews count]; i++) {
    UIImageView *view =[self.scrollView.subviews objectAtIndex:i];
    sizeOfContent += view.frame.size.height;
    [view release];
}

// Set content size for scroll view
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, sizeOfContent);

Я продолжаю получать сообщение EXC_BAD_ACCESS в классе main.m.

Я подозреваю, что проблема заключается в сохранении фактического scrollView, поскольку я думаю, что scrollView не сохраняет тот же объект, который является подпредставлением представления.

Есть предложения? Заранее спасибо!

1 Ответ

1 голос
/ 07 ноября 2011

Если вы определили self.scrollView как @property(nonatomic, retain), то первая неправильная вещь - это строка;

self.scrollView = [[UIScrollView alloc] initWithFrame:fullScreenRect];

Устанавливает для счетчика сохранения scrollView значение 2, что не соответствует вашим ожиданиям.alloc сохраненные свойства, подобные этому,

scrollView = [[UIScrollView alloc] initWithFrame:fullScreenRect];

Я думаю, что ваша ошибка BAD_ACCESS происходит отсюда;

for (int i = 0; i < [self.scrollView.subviews count]; i++) {
   UIImageView *view =[self.scrollView.subviews objectAtIndex:i];
   sizeOfContent += view.frame.size.height;
   [view release];
}

Почему вы releasing просматриваете?Вы не alloc это, поэтому нет никаких оснований для release это.Удалите строку [view release] и проверьте снова.

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