iPhone - 固定(tableHeaderView),在滚动单元格时分组UITableView

fuz*_*uzz 3 iphone objective-c uitableview uiview

我有一个UIView分组UITableView,我希望UIView保持固定tableHeaderView,而不是滚动时的移动UITableViewCell.因此,我希望UIView滚动时细胞位于后面.

这是我目前使用我的代码添加UIView到我的UIViewController:

Interface.h:

@interface MyAccountVC : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    HeaderView *myHeaderView; // Inherits from UIView
    UITableView *tv;
}

@property (nonatomic, retain) IBOutlet UITableView *tv;
@property (nonatomic, retain) HeaderView myHeaderView;
Run Code Online (Sandbox Code Playgroud)

Implementation.m(在viewDidLoad中):

// Set up the table's header view based on our UIView 'HeaderView' outlet.
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"HeaderView" owner:nil options:nil];

for (id currentObject in topLevelObjects) {
    if ([currentObject isKindOfClass:[UIView class]]) {
        self.myHeaderView = (HeaderView *)currentObject;
        break;
    }
}

CGRect newFrame = CGRectMake(0.0, 0.0, self.tv.bounds.size.width, self.myHeaderView.frame.size.height);
self.myHeaderView.frame = newFrame;

self.tv.tableHeaderView = self.myHeaderView;
Run Code Online (Sandbox Code Playgroud)

不知道这是增加的最好办法myHeaderViewUITableView,但它似乎是工作的罚款,我可以简单地上面的代码添加到任何UIViewController一个UITableView重新使用的标题如果需要的话.

当我滚动时,标题随着单元格一起移动,但我希望标题在顶部正下方固定,UINavigationBar而单元格在标题后面自由移动.如果这一切都有意义或者您是否需要更多代码以确定我想要实现的目标,请告诉我.

Sea*_*Lee 7

只是详细阐述了Paramasivan的答案.

我不使用nib文件创建视图,因此我将描述代码,假设您以编程方式创建视图.

您需要做的是,只需将标题视图放在顶部,然后在顶部放置一个大小的桌面视图.

例:

- (void) loadView {
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];
    self.view = view;

    self.myHeaderView = ... // use your init function, with rect something like (0,0,320,50)
    [view addsubview:self.myHeaderView];

    self.tv = [[UITableView alloc] init... // with frame like (0,50,320,430)
    [view addSubview:self.tv];

    // release everything
}
Run Code Online (Sandbox Code Playgroud)

这样,你有一个UIView,它始终位于视图的顶部,不会滚动到tableview.

如果你将myHeaderView添加到tableview headerView中,我会一直使用tableview滚动.

在您的示例中,使用nib,您可以在"viewDidLoad"函数中调整框架的大小,以便UITableView从位置(0,myHeaderView.frame.size.height)开始.

编辑*终于找到了如何使用4个空格进行代码格式化:)