UIScrollView Пользовательский ViewController - PullRequest
0 голосов
/ 07 ноября 2011

У меня странная ситуация.Я хочу, чтобы пользователь выбрал категорию, нажав кнопку внутри UIScrollView.Вот соответствующий код контроллера просмотра страниц (тот, который содержит UIScrollView, сделанный с IB):

- (void)viewDidLoad
{
    [super viewDidLoad];

    uiScroll.contentSize = CGSizeMake([[SawData shared].categories count]*320,480);
    int i = 0;
    for (NSString* key in [SawData shared].categories) {
        Baton *b = [[Baton alloc] initWithNibName:@"Baton" bundle:nil];
        b.view.frame = CGRectMake(i++*320, 0, 320, 480);
        [uiScroll addSubview:b.view];
        [b release];
    }
}

Baton - это новый подкласс UIViewController, содержащий только одну кнопку с действием touchUp, которая печатает некоторую информацию журнала с использованием NSLog.С помощью этого кода я получаю правильно расположенные дубинки рядом.Проблема состоит в том, что нажатие кнопки дает EXC_BAD_ACCESS, когда контроллер представления Batons освобожден.

Если я удаляю [b release];У меня есть наложенные друг на друга дубинки, поскольку i ++ * 320 дает тот же результат (который я проверил, и он правильный).В этом случае нажатие на кнопку работает.

Спасибо за помощь!

iOS SDK 4.3

РЕДАКТИРОВАТЬ 1: После долгих проб и ошибок мне удалось выяснитьчто происходит.Его ширина управления 320px.Если я изменил их на 321 или 319, все работает как надо.Мне не нужно выпускать контроллер для изображения, чтобы заполнить содержимое UIScrollView и нажать кнопку работает.Какого черта это?

1 Ответ

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

Это может быть причиной.

Baton *b = [[Baton alloc] initWithNibName:@"Baton" bundle:nil] autorelease];

Вы также должны убедиться, что кнопка UIB инициализирована, прежде чем нажимать на нее. Вы можете сделать это легко с помощью отладчика.

Взгляните сюда

Действительно ли addSubview UIView сохраняет представление?

...