2011-04-29 80 views
2

我使用幾乎相同的代碼來加載我的UIViewController(稱爲LessonScrollView)到UIScrollView。該方法被調用時,在scrollViewDidScroll方法如何從UIScrollView卸載UIViewController?

- (void)loadScrollViewWithPage:(int)page { 

if (page < 0) 
    return; 
if (page >= numPages) 
    return; 

LessonScrollView *controller = [imageViewControllers objectAtIndex:page]; 
if ((NSNull *)controller == [NSNull null]) { 
    controller = [[LessonScrollView alloc] initWithPage:page forLesson:[self title]]; 
    [imageViewControllers replaceObjectAtIndex:page withObject:controller]; 
    [controller release]; 
} 

if (controller.view.superview == nil) { 
    CGRect frame = CGRectMake(0, 80, 320, 285); 
    frame.origin.x = frame.size.width * page; 
    frame.origin.y = 0; 
    controller.view.frame = frame; 
    [scrollView addSubview:controller.view]; 
} 

}

在某些情況下,我有好幾個頁面,我相信,保留在內存中,直到UIViewController的負責滾動視圖被釋放(或內存警告發生)。

我的問題是,我將如何釋放LessonScrollView對象。我會打電話叫一個方法,說

- (void)unloadScrollViewWithPage:(int)page 
在scrollViewDidScroll

和頁面將當前頁面 - 1

感謝您可以提供任何幫助。

回答

1

試試這個:

[controller.view removeFromSuperview];//to release the controller's view 
[imageViewControllers replaceOjectAtIndex:page withObject:[NSNull null]];//to release the actual controller which should lead to it being dealocated 
+0

該工程的感謝!真的很簡單。 – sburnstone 2011-04-29 15:15:36