Моя программа добавляет на экран неограниченное количество просмотров (определяемых пользователем во время выполнения), и я отслеживаю эти представления, сохраняя их в массиве.
Внутри моего контроллера просмотра
for (NSString *equationText in equationData) {
// creates a FormulaLabel object for every object in the equationData mutable array
FormulaLabel *tempLabel = [[FormulaLabel alloc] initWithFrame:CGRectMake(frame)];
[view addSubview:tempLabel];
[balanceItems addObject:tempLabel]; //balance items keeps track of all the views
Когда я обновляю свои данные, мне нужно другое расположение представлений на экране, поэтому я решил, что самым быстрым способом отразить изменение данных будет удаление всех представлений, которые в настоящее время находятся на экране, и добавление новых представлений из обновленных данных. .
Для этого подхода (насколько я знаю) мне нужно удалить представления из суперпредставления, освободить их и удалить объекты, хранящиеся в balanceItems
. Затем мне нужно инициализировать новые представления, добавить их в подпредставление и добавить их в массив. Однако приведенный ниже код создает ошибку.
for (UIView *view in balanceItems) {
[view removeFromSuperview];
[view release];
}
[balanceItems removeAllObjects];
Как правильно удалить представления из суперпредставления и массива?