【发布时间】:2011-07-21 19:12:28
【问题描述】:
好的,这是另一个问题。
我正在创建一个名为 ProgressView 的 UIView,它是一个带有活动指示器和进度条的半透明视图。
如果需要,我希望能够在我的应用中的不同视图控制器中使用此视图。
我知道 3 种不同的方法(但我只对其中一种感兴趣):
1) 以编程方式创建整个视图,根据需要进行实例化和配置。不用担心我得到那个。
2) 在界面生成器中创建 UIView,添加所需的对象并使用如下方法加载它。问题在于我们基本上猜测视图是 objectAtIndex:0,因为在文档中我没有找到对从 [[NSBundle mainBundle] loadNibName: 函数返回的元素顺序的引用。
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"yournib"
owner:self
options:nil];
UIView *myView = [nibContents objectAtIndex:0];
myView.frame = CGRectMake(0,0,300,400); //or whatever coordinates you need
[scrollview addSubview:myView];
3) 继承 UIViewController 并让它照常管理视图。在这种情况下,我永远不会真正将视图控制器推入堆栈,而只是将其主视图:
ProgressViewController *vc = [[ProgressViewController alloc] initWithNibName:@"ProgressView" bundle:nil];
[vc.view setCenter:CGPointMake(self.view.center.x, self.view.center.y)];
[self.view addSubview:vc.view];
[vc release];
据我所知,#3 是执行此操作的正确方法(除了以编程方式),但我不完全确定在另一个控制器的视图保留其主视图时释放 ProgressView 的视图控制器是否安全(直觉说它会泄漏?)?
在这种情况下我应该在内存管理方面做什么,我应该在何时何地释放 ProgressView 的视图控制器?
提前感谢您的想法。
干杯,
罗格
【问题讨论】:
标签: ios memory-management uiview uiviewcontroller