2011-03-09 49 views
2

我在我的MainWindow.xib中有一个UINavigationController和UITableView。我试图在视图的顶部插入一个不可触摸/不可移动的图像。 (我不想简单地更改UINavigationBar背景,因为从我所经历的情况来看,UINavigationBar高度不能任意增加。)使用UINavigationController时在UITableView顶部插入图像?

由于这是一个根视图,它的行为由我的RootViewController控制。当视图加载时,我隐藏导航栏使用self.navigationController.navigationBarHidden = YES;

我试着将UIView添加到UITableView的顶部,但是当用户滚动浏览表格时,顶部图像会移动。如何在UITableView的顶部放置静止图像,而不移动它,就好像它是一个单元格,而不使用UINavigationBar背景图像?

天真考虑的可能性:

  • 括在另一视图中的视图,其顶部的包含图像?
  • 覆盖屏幕顶部的图像蒙版?

(HIG侵犯,任何人吗?)

回答

1

您可以创建另一个UIViewController其中包含UITableViewController和你在上面的静态图像。这样,您甚至可以调整表格视图的大小,以便静态图像显示在上方而不是在表格上方。

UIViewController *middleViewController = [[UIViewController alloc] init]; 
[[middleViewController view] addSubview:tableView]; 
[[middleViewController view] addSubview:staticImageView]; 
... 
[navigationController initWithRootViewController:middleViewController]; 

自从我做了我最后的可可应用程序以来,已经有很长一段时间了,所以我不能保证它可以工作。

+0

我想你的意思是[[middleViewController视图] addSubview:tableView]; – 2012-01-16 22:46:33

+0

你是对的,谢谢! – David 2012-01-17 13:43:26

1

如果您的视图控制器是UITableViewController您不能轻易添加另一个视图,因为tableViewController只管理一个视图,即UITableView。我建议您使用普通的UIViewController,而不是将顶部视图添加为UIView,将内容添加为UITableView作为主要viewController.view的子视图。然后,在您的UIViewController中实施UITableViewDelegateUITableViewDataSource协议。

+0

我原来走了一条类似的路径,但认为导航控制器会帮助我管理我的应用程序的层次结构,并允许使用方便的后退箭头(这在UIToolBar中是不允许的)。我不相信导航控制器的帮助很大。 – 2011-03-09 22:28:19

+0

你可以在'UITabBarController'的'UINavigationController'中嵌入一个'UIViewController'和你的两个子视图。这样你就可以获得最好的世界。通过覆盖'-drawRect:'可以自定义navigationBar的背景。但是,如果您打算还自定义后退按钮的外观,请准备好一个痛苦的房子。 – 2011-03-10 12:40:40