非滚动tableViewHeader
Posted
技术标签:
【中文标题】非滚动tableViewHeader【英文标题】:Non scrolling tableViewHeader 【发布时间】:2009-08-16 09:00:41 【问题描述】:首先是一些背景信息:
我有包含 UITableView 的 UIViewController。在 loadView 方法中(表初始化后),我将 UIViewControllers 视图设置为表视图:self.view = tableView;
我想要的是屏幕顶部的一个视图(在 UITableView 之前),它在滚动时不会随表格视图的其余部分一起滚动。我尝试将我的 UIView 添加到表格视图的 tableViewHeader 中,它可以正确显示但会随着表格的其余部分滚动。
有什么简单的解决方法吗?无论哪种方式,我们都非常感谢任何有关解决方案的提示。
编辑:
想一想,我想要的是类似于股票应用程序的东西,其中底部是固定的,屏幕的其余部分是 UITableView。唯一的区别是我想要屏幕顶部的静止部分。
【问题讨论】:
【参考方案1】:正如 kmit 已经指出的那样,您可以轻松地将多个子视图添加到您的视图中。因此,不要将表视图直接设置为self.view
,而是创建一个空白UIView
(作为容器)并将表视图和标题视图作为子视图添加到该视图。您可以通过它们的框架属性控制视图的范围。一个简单的例子:
- (void)loadView
UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[view setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth];
// header view
HeaderView* headerView = [[HeaderView alloc] initWithFrame:CGRectMake(0, 0, 320, 182)];
self.headerView = headerView; // in case you need the reference later on
[view addSubview:headerView];
[headerView release];
// table view
UITableView* tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 182, 320, 186) style:UITableViewStylePlain];
[tableView setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth];
tableView.delegate = self;
tableView.dataSource = self;
[view addSubview:tableView];
self.tableView = tableView;
[tableView release];
self.view = view;
[view release];
作为手动创建包含UIView
的替代方法,您可以在loadView
实现的开头调用[super loadView]
。
【讨论】:
【参考方案2】:是否有理由将 UIViewController 的视图设置为 UITableView 的视图?为什么不将 UITableView 作为子视图处理?这将允许您在 UITableView 上方添加您想要的任何内容 - 另一个视图、以 UIViewController 的视图作为背景的空白空间等。
【讨论】:
你有什么建议?我尝试通过说: [self.view addSubview:headerView] 将 UIView 和 UITableView 添加到 UIViewController和 [self.view addSubview:tableView];每个视图都已使用适当的框架进行了初始化。当我这样做时,程序崩溃并且调试器启动显示:Loading 95186 stack frames... 嗯,发现错误。我早些时候尝试过你的方法,正如我所说,整个事情都崩溃了。那是因为我忘了放 [super loadView];在我的 loadView 方法中。所以我会给你正确的答案,因为你的方法是我最终会使用的。以上是关于非滚动tableViewHeader的主要内容,如果未能解决你的问题,请参考以下文章
如何在 UIScrollView 的滚动指示器下方放置非滚动 UIView?