Iphone iOS:将UIView添加到UITableView

Iphone iOS:将UIView添加到UITableView,iphone,uitableview,uiview,ios5,Iphone,Uitableview,Uiview,Ios5,我试图在UITableView上方添加一个UIView,以模仿iphonefacebook风格的菜单。我将控制器设置为UIViewController,然后添加一个tableview,使其工作正常。但是,除非控制器是UITableView,否则我无法将菜单设置为静态菜单 是否可以将视图添加到tableview的顶部,并且只使背景中的tableview可滚动,而不使前景中的视图滚动 下面是子类为UIViewController 但是我无法通过IB使tableview单元格保持静态,因为它不是UI

我试图在
UITableView
上方添加一个
UIView
,以模仿iphonefacebook风格的菜单。我将控制器设置为
UIViewController
,然后添加一个tableview,使其工作正常。但是,除非控制器是
UITableView
,否则我无法将菜单设置为静态菜单

是否可以将视图添加到tableview的顶部,并且只使背景中的tableview可滚动,而不使前景中的视图滚动

下面是子类为
UIViewController

但是我无法通过IB使tableview单元格保持静态,因为它不是
UITableView
Controller的子类

按NSJones代码编辑: 它似乎在某种程度上走在正确的轨道上。但是,视图仍然会阻塞表。如果我从情节提要中删除视图,它将只显示表。


你可以像让任何真实物体悬停一样让视图悬停;用看不见的东西把它举起来

基本上,您要做的是创建一个清晰的
UIView
(禁用用户交互)它是视图控制器视图的大小,并将其作为子视图添加到视图控制器的视图属性中。这样它就无形地坐在上面了。然后,您可以将子视图添加到该清晰视图中,而该子视图将不会移动

编辑:

这种干净的方法似乎不适合您,因为您需要将视图控制器设置为
UITableViewController
。这个稍微复杂一点的方法的答案是为
UIScrollView
使用委托方法,它也适用于
UITableView
。苹果公司在WWDC2011-125-UITableView更改、提示、技巧视频中展示了这一概念的精彩演示。如果你能看,我强烈推荐。本期的内容大约从36:10开始

但总而言之,您实现了
scrollViewDidScroll:
delegate方法。并通过调整视图的位置属性来处理tableview的移动。在这里,我保留了一个名为
viewtokepstill
UIView
属性,仍然使用此方法

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    // CGFloat stillViewDesiredOriginY; declared ivar
    CGRect tableBounds = self.tableView.bounds; // gets content offset
    CGRect frameForStillView = self.viewToKeepStill.frame; 
    frameForStillView.origin.y = tableBounds.origin.y + stillViewDesiredOriginY; // offsets the rects y origin by the content offset
    self.viewToKeepStill.frame = frameForStillView; // set the frame to the new calculation
}

假设您希望表格中的某些内容始终可见,请从包含菜单视图和UITableView的视图开始。缩小表格,使其在菜单视图开始处结束。表格视图可以使用较少的垂直空间。

如果将UIViewController的视图作为表格视图,则表格将覆盖整个屏幕,因此无法在其上添加任何内容

为什么不尝试以下方法:

1) create a new UIViewController
2) add a view on top where you want your menu
3) in the space left under just drag a table view from the component library 
4) don't forget to set the 2 table view delegates to be your view controller class

仅此而已?

与其将其添加为表视图的子视图,不如将其添加为表视图的超级视图的子视图;这样它就不会滚动

因此,与此相反:

[tableView addSubview:viewController.view];
这样做:

[tableView.superview addSubview:viewController.view];

你可以在背景中有一个视图,在该表视图的顶部有一个视图,使用此处理将很容易,并且可能会实现你想要的。当你说“在顶部”时,你的意思是像标题一样吗?不。像背景是uiview,前景是tableview。我想做的是前景是uiview,背景是tableview。我将编辑我的问题,以显示我使用UIViewController时的屏幕截图。可能是重复的。但是,当菜单打开时,我滚动左菜单,它也滚动右视图与菜单。我更新了我的答案。我想我知道你是从现在开始的,如果不是写一行的话。两件事:使用委托方法,你试图保持在静态位置的视图应该是tableview的直接子视图。其次,出于您的目的,您可能会将“stillViewDesiredOriginY”替换为0。但是你必须测试一下。我也很好奇你是如何创建你的浮动(固定位置)视图的。我想你错过了这个问题。我已经有了一个带有tableview的UIViewController,它工作得很好。我想做的是用UITableViewController复制它,这样我可以通过IB创建静态表菜单。好的,我没有得到你想要的静态表,原始文本说“我无法使菜单成为静态菜单”似乎不起作用。我做了
[self.sideMenu.superview addSubview:self.contentView]
,它似乎没有显示主要内容。