2012-02-25 6 views
-1

Я пытаюсь использовать цикл, чтобы добавить много UIView, каждый из которых представляет объект и содержит UIImage + UILabel, возвращенный из запроса db, в UIScrollview , Каждый UIView имеет кнопку внутри, которая предназначена для вызова супервизора для перехода к следующему UIViewController. Однако, поскольку я выделяю эти UIView в пределах цикла, память, похоже, не сохраняется, поэтому нажатие кнопки всегда вызывает ошибку seg.Как добавить много UIViews (каждый с кнопкой внутри) как subviews для UIScrollview

Поскольку мне нужно передать UIImage и UILabel, хранящиеся в UIView, контроллеру, я вступаю в это, что лучший способ сделать это?

Вот мой код:

вид Родитель:

// это вызывается для цикла

IndividualObjectViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"smallObjectSubView"]; 
controller.delegate = self;  
controller.view.frame = CGRectMake(105*column+5, 125*row+45, 100, 120); 
[self.objectScrollView addSubview:controller.view]; 

вид объекта:

  • (IBAction) objectButton: (id) отправителя { }

Я оставил IBAction полностью пустым для отладки, но похоже, что как только я подключу это действие с помощью кнопки раскадровки, я получаю сигнал, полученный программой: EXEC_BAD_ACCESS.

+0

это звучит как NavigationController со списком ListView? Почему бы не использовать то, что уже дает вам яблоко? –

+0

Это действительно навигационный контроллер, но мне не очень повезло найти информацию о UIListView. Можете ли вы указать мне больше информации об этом? Благодарю. –

+0

https://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITableView_Class/Reference/Reference.html –

ответ

0

Если вы не сохранили controller, он будет освобожден в конце текущего прохода через цикл выполнения (даже если вы используете его представление).

Вы должны хранить все экземпляры IndividualObjectViewController в NSMutableArray или NSMutableDictionary. Эти контейнеры сохраняют объекты, которые вы храните в них.

+0

Спасибо, Роб. Будет ли это создавать проблемы в памяти, если я загружаю много этих представлений (скажем, 30+)? Этот подход используется UITableView? –

+0

Просто попробовал это, добавив в родительский контроллер @Styper (Strong) NSMutableArray и добавив к нему каждый контроллер объекта, результатом будет такая же ошибка EXEC_BAD_ACCESS. –

+0

'UITableView' не требует, чтобы каждая ячейка имела свой собственный' UIViewController', что вы эффективно делаете. –

Смежные вопросы