如何从UIScrollView卸载UIViewController?

时间:2011-04-29 14:49:33

标签: iphone objective-c uiviewcontroller uiscrollview

我使用几乎相同的代码将我的UIViewController(称为LessonScrollView)加载到UIScrollView中。在scrollViewDidScroll方法

中调用该方法
- (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];
}

}

在某些情况下,我有相当多的页面,我相信它会保留在内存中,直到负责scrollView的UIViewController被释放(或发生内存警告)。

我的问题是,如何发布LessonScrollView对象。我会称之为名为

的方法
- (void)unloadScrollViewWithPage:(int)page 
在scrollViewDidScroll和页面中的

将是当前页面 - 1.

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分: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