2012-06-27 4 views
0

У меня проблема с моим scrollview, который содержит несколько просмотров. Я думаю, проблема в том, что выпуски subviews выпущены. У меня есть кнопки в подвидов и когда я нажимаю кнопки я получаю эту ошибку, [GraphDisplayViewController performSelector:withObject:withObject:]:ios несколько просмотров с просмотром прокрутки освобожденный экземпляр

сообщение отправлено высвобождены, например

. Если есть только одно subview, то я могу просто использовать свойство, и это работает, но поскольку количество подзаголовков меняется (одно или несколько), оно не работает, и я не знаю, как это решить.

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

Мой макет выглядит следующим образом: родительский вид (DetailViewController) содержит прокрутку, я добавляю представления (GraphDisplayViewController) в scrollview, подназвания каждого загружают представление (GraphView).

Любая помощь или совет были бы очень признательны. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо за ваше время.

Пример кода, как я добавить подвидов,

DetailViewController

- (void)loadScrollViewWithPage:(int)page 
{ 
if (page < 0) return; 
if (page >= pageControl.numberOfPages) return; 

subView = [viewControllers objectAtIndex:page]; 
NSString *description; 
NSString *packsize; 
if ((NSNull *)subView == [NSNull null]) 
{ 
    subView = [[GraphDisplayViewController alloc] initWithNibName:@"GraphDisplayViewController" bundle:nil]; 
    [viewControllers replaceObjectAtIndex:page withObject:subView]; 
    subView = [[GraphDisplayViewController alloc] init]; 
    subView.molecule = moleculeName; 
    subView.description = description;  
    subView.dataArray = moleculePrices; 

} 
else 
{ 
    return; 
} 

// add the controller's view to the scroll view 
if (nil == subView.view.superview) 
{ 
    CGRect frame = scrollView.frame; 
    frame.origin.x = frame.size.width * page; 
    frame.origin.y = 0; 
    subView.view.frame = frame; 
    [scrollView addSubview:subView.view]; 
} 
} 

UPDATE Был ошибка в коде, тестирование, чтобы увидеть, если это решит что-нибудь

subView = [[GraphDisplayViewController alloc] initWithNibName:@"GraphDisplayViewController" bundle:nil]; 
[viewControllers replaceObjectAtIndex:page withObject:subView]; 
subView = [[GraphDisplayViewController alloc] init]; <- Mistake 
+0

Как объявляется 'subview'? (Если это свойство, используйте 'self.subView', чтобы ссылаться на него.) –

ответ

0

В моем коде была простая ошибка, я дважды запускаю представление.

subView = [[GraphDisplayViewController alloc] initWithNibName:@"GraphDisplayViewController" bundle:nil]; 
subView = [[GraphDisplayViewController alloc] init]; <- Mistake 
0

Вы не сохраняете GraphDisplayViewController, присвоенный subView переменная. и, следовательно, вы теряете его в определенный момент времени.

, как мы можем видеть, вы выборку в subView объекте как subView = [viewControllers objectAtIndex:page]; , то вы должны хранить его в viewControllers (хотя я не уверен, что логика вы реализовали, но в Уре коды для каждого выделено subView это должно быть выполнено: [viewControllers replaceObjectAtIndex:page withObject:subView]; и вы должны быть уверены, что переменная viewControllers также сохраняется для того, чтобы все работало плавно.)

массив, чтобы его можно было сохранить, чтобы избежать столкновения, с которым вы сталкиваетесь.
Я надеюсь, что это сработает для вас. Лучшее из удачи

+0

Привет, спасибо за ваш ответ, вы имеете в виду, что я должен использовать свойство, например. @property (неатомный, сохраняемый) GraphDisplayViewController * subView; Если это так, я уже делаю это, я обновляю свой вопрос, я думаю, что нашел ошибку, и теперь она работает, но все еще тестирует ее. – JingJingTao

+0

, хотя вы могли бы создать 'subView' как свойство сохранения, но на самом деле он не сохраняется, поскольку вы не используете' self.subView' при назначении. – samfisher

+0

О, хорошо, всегда лучше использовать self.property для сохраненных свойств? Я получил свое приложение для работы, я думаю, что это была ошибка, которую я обновил в своем посте.Странно, но это работает, когда я просто использую «subView». – JingJingTao

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