非滚动tableViewHeader

时间:2009-08-16 09:00:41

标签: iphone uitableview uiview

首先是一些背景信息:

我有包含UITableView的UIViewController。在loadView方法中(在初始化表之后),我将UIViewControllers视图设置为表视图:self.view = tableView;

我想要的是屏幕顶部的视图(在UITableView之前),在滚动时不会滚动表格视图的其余部分。我已经尝试将我的UIView添加到表视图的tableViewHeader中,该表正确显示但与表的其余部分一起滚动。

这有什么简单的解决方法吗?无论哪种方式,对解决方案的任何提示都非常感激。

编辑:

想想看,我想要的是库存应用程序,其中底部是静止的,屏幕的其余部分是UITableView。唯一的区别是我希望固定部分位于屏幕顶部。

2 个答案:

答案 0 :(得分: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的替代方法,您可以在[super loadView]实施的开头调用loadView

答案 1 :(得分:0)

您是否有理由将UIViewController的视图设置为UITableView的视图?为什么不将UITableView作为子视图处理?这将允许您在UITableView - 其他视图上方添加您想要的任何内容,以UIViewController视图作为背景添加空白区域等。