iPhone-固定(tableHeaderView)在滚动单元格时使用分组UITableView
我有一个带有分组的iPhone-固定(tableHeaderView)在滚动单元格时使用分组UITableView,iphone,objective-c,uiview,uitableview,Iphone,Objective C,Uiview,Uitableview,我有一个带有分组的UITableView的UIView,我希望UIView保持为固定的tableHeaderView,而不是在滚动UITableView单元格时移动。因此,滚动时,我希望单元格位于ui视图的后面 这是我当前用于将我的UIView添加到我的UIViewController的代码: 接口h: @interface MyAccountVC : UIViewController <UITableViewDelegate, UITableViewDataSource> {
UITableView
的UIView
,我希望UIView
保持为固定的tableHeaderView
,而不是在滚动UITableView单元格时移动。因此,滚动时,我希望单元格位于ui视图的后面
这是我当前用于将我的UIView
添加到我的UIViewController
的代码:
接口h:
@interface MyAccountVC : UIViewController <UITableViewDelegate, UITableViewDataSource> {
HeaderView *myHeaderView; // Inherits from UIView
UITableView *tv;
}
@property (nonatomic, retain) IBOutlet UITableView *tv;
@property (nonatomic, retain) HeaderView myHeaderView;
不确定这是否是将myHeaderView
添加到UITableView
的最佳方式,但它似乎工作正常,我可以使用UITableView
将上述代码添加到任何UIViewController
中,以便在需要时重复使用标题
当我滚动时,页眉会随着单元格一起移动,但我希望页眉固定在顶部UINavigationBar
的正下方,同时单元格会在页眉后面自由移动。请让我知道这一切是否有意义,或者您是否需要更多的代码来确定我试图实现的目标。您可以将视图放在UITableView的正上方,而不是将其作为headerview放在内部 正在详细阐述帕拉马西万的答案
我不使用nib文件创建视图,因此我将描述假设您以编程方式创建视图的代码
您需要做的是,只需将标题视图放在顶部,并在顶部下方放置一个大小合适的tableview
例如:
- (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
}
[tableView setContentInset:UIEdgeInsetsMake(44.0f, 0.0f, 0.0f, 0.0f)];
[tableView setContentOffset:CGPointMake(0.0f, 44.0f)];
[[self view] addSubview:tableView];
UIView *viewAboveTableView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)];
[[self view] addSubview:viewAboveTableView];
这样,您就拥有了一个始终位于视图顶部的UIView,并且不会与tableview一起滚动
如果将myHeaderView添加为tableview headerView,它将始终与我认为的tableview一起滚动
在您的示例中,使用nib,您可能可以在“viewDidLoad”函数中调整帧的大小,以便UITableView从位置(0,myHeaderView.frame.size.height)开始
EDIT*最终了解了如何使用4个空格进行代码格式化:)您可以创建一个自定义的UIViewController
并自己实现UITableViewDelegate
和UITableViewDataSource
协议
将UITableView
添加到UIViewController
中,然后只需调用-addSubview:(UIView*)view
方法,即可将自定义UIView
添加到UITableView
的顶部。设置UITableView内容和滚动插入属性
例如:
- (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
}
[tableView setContentInset:UIEdgeInsetsMake(44.0f, 0.0f, 0.0f, 0.0f)];
[tableView setContentOffset:CGPointMake(0.0f, 44.0f)];
[[self view] addSubview:tableView];
UIView *viewAboveTableView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 44.0f)];
[[self view] addSubview:viewAboveTableView];
您还可以在UIView
下方使用一个UIImageView
,该视图位于UITableView的顶部,图像一开始是透明的,然后淡入到UIView
的颜色中。这将显示单元格位于UIView
后面
这在代码中比在Interface Builder中更容易实现。根据我的经验,在其他视图之上添加UIView对象会使Interface Builder感到困惑,尤其是当它是UITableView时。由于某些原因,它也大大降低了界面生成器的速度。是的,在UITableView的正上方有一个UIView。以编程方式说[self.view addSubview:viewHeader];[self.view addSubview tableview列表];如果我这样做,UIView将覆盖前两个单元格。然后设置表的contentInset。;)我也在.xib上做过。我在顶部附近放置了一个UIView,然后添加了一个UITableView来填充它下面的空间。如果您允许旋转,只需小心地按您想要的方式设置AutoResizingMask。