【发布时间】:2010-10-15 01:38:12
【问题描述】:
我正在开发一个在导航堆栈中具有三个表视图控制器的应用程序。根视图控制器和第二个 VC 都有工具栏,但我想在第二个视图控制器like this 中添加一个子视图。 (颜色只是为了可视化。)
我想以编程方式添加视图,因为我无法使用 IB 来做到这一点而不会感到头疼。现在,我已经能够通过在第二个视图控制器中绘制一个 UIView 来获得我想要的东西,如下所示:
- (void)viewDidLoad {
[super viewDidLoad]
UIView *detailView = [[UIView alloc] initWithFrame:CGRectMake(0, 392, 320, 44)];
detailView = [UIColor redColor];
[self.navigationController.view addSubview:detailView];
[detailView release];
}
这种方法的问题在于,一旦 UIView 在第二个视图控制器中加载,它就会保持加载状态并在第三个和根视图控制器中绘制。我尝试了多种删除 UIView 的方法,包括在 viewDidUnload 中将 detailView 设置为 nil,在 didSelectRowAtIndexPath 中调用 removeFromSuperview(从整个堆栈中删除了视图)。
我也尝试将子视图添加到 self.view,但这会将它推到表格视图的可见区域下方,所以我必须向上滚动才能看到它,当我放手时它会弹回。
显然,将此子视图添加到导航控制器并不是实现我想要的最佳方式,但我不知道从这里去哪里。
【问题讨论】:
标签: iphone uiview uinavigationcontroller subview tableview