为什么tableview的页眉和页脚始终位于视图层次结构的顶部,而不是表格的单元格?
这是我得到的:
我将菜单固定在tableviewcontroller的视图上,因为我希望导航栏始终可见。将其锚定在导航栏上的解决方案解决了标题视图的问题,但覆盖了导航栏。
有谁知道如何解决这个问题?为什么细胞被正确涂抹?
答案 0 :(得分:1)
您可能不应直接干扰UITableView
的内部视图层次结构。 Apple可以随意订购表格视图的子视图(并在将来的版本中进行更改)。
相反,将表视图和菜单视图放入公共容器视图中,并使后者成为视图控制器的主视图。这样,您可以确定菜单视图始终位于表格视图上方。
答案 1 :(得分:0)
我改变了我的设计,但现在我没有在我的桌子上得到触摸事件。
但是当我添加这个方法时 - 我明白了,我正在触摸tableviewcontroller ......
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"ShieldingViewController received touch");
[self.buttonMenu shieldingViewTouched];
}
以下是我改变的内容:
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect viewFrame = self.view.frame;
viewFrame.origin.y = 0;
UIView *rootView = [[UIView alloc] initWithFrame:viewFrame];
rootView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
// Setup the table view
UITableView *newTableView = [[UITableView alloc] initWithFrame:viewFrame style:self.tableView.style];
newTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
newTableView.backgroundColor = [UIColor darkGrayColor];
UIView *menuLayerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 500)];
self.tableView = newTableView;
[rootView addSubview:self.tableView];
[rootView addSubview: menuLayerView];
self.view = rootView;
[[CustomNavigationController instance] setCurrentViewForMenu: menuLayerView];
[[CustomNavigationController instance] showMenuInNavigationBarForController:self];
[newTableView release];
[menuLayerView release];
[rootView release];
}