Ios 使用UINavigationController时是否在UITableView顶部插入图像?

Ios 使用UINavigationController时是否在UITableView顶部插入图像?,ios,uitableview,cocoa-touch,uinavigationcontroller,uikit,Ios,Uitableview,Cocoa Touch,Uinavigationcontroller,Uikit,我在main window.xib中有一个UINavigationController和UITableView。我试图在视图顶部插入一个不可触摸/不可移动的图像。(我不想简单地更改UINavigationBar背景,因为根据我的经验,UINavigationBar高度不能任意增加。) 由于这是一个根视图,其行为由我的RootViewController控制。加载视图时,我使用self.navigationController.navigationBarHidden=YES隐藏导航栏 我曾尝试将U

我在main window.xib中有一个UINavigationController和UITableView。我试图在视图顶部插入一个不可触摸/不可移动的图像。(我不想简单地更改UINavigationBar背景,因为根据我的经验,UINavigationBar高度不能任意增加。)

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

我曾尝试将UIView添加到UITableView的顶部,但当用户在表格中滚动时,顶部图像会移动。如何将静止图像放置在UITableView的顶部,而不使其像单元格一样移动,也不使用UINavigationBar背景图像

天真地考虑可能性:

  • 是否将视图包含在另一个视图中,该视图的顶部包含图像
  • 在屏幕顶部覆盖一个图像遮罩

(有人违反了吗?

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

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

自从我上次制作cocoa应用程序以来已经有很长一段时间了,所以我不能保证它能正常工作。

如果您的视图控制器是
UITableViewController
,您无法轻松添加另一个视图,因为tableViewController只管理一个视图,即
UITableView
。我建议使用普通的
UIViewController
,在主
viewController.view
中添加一个
UIView
作为俯视图,为内容添加一个
UITableView
。然后,在您的
UIViewController

中实现
UITableViewDelegate
UITableViewDataSource
协议。我最初也采用了类似的方法,但我认为导航控制器可以帮助我管理应用程序的层次结构,并允许使用方便的返回箭头(这在UIToolBar中是不允许的). 我不相信导航控制器有多大帮助。您可以在
uitabarcontroller
中的
UINavigationController
中嵌入一个
UIViewController
和两个子视图。这样你就可以得到世界上最好的。通过覆盖
-drawRect:
,可以自定义导航栏的背景。但是,如果您还计划自定义“后退”按钮的外观,请准备好承受痛苦;