在UITableViewController中添加子视图

Mar*_*ard 8 iphone cocoa-touch uitableview

我正在使用UITableViewController,我已经调整了表视图的高度并将其移动了一点.现在我想在表视图上面添加一个UIImageView,但我唯一可以做的就是将UIImageView添加为UITableViewController的UITtableView的子视图,这样UIImageView就不在UITableView上面了,图像随桌面滚动视图.

我怎样才能完成我正在尝试的事情?这是我一直在使用的代码:

UIImageView *tabImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"temp.png"]];
[self.view addSubview:tabImageView];
Run Code Online (Sandbox Code Playgroud)

谢谢!

Sha*_*rog 18

我相信UITableViewController要求它view是一个UITableView.

在过去,我通过将视图控制器从子类化更改UITableViewController为子类化UIViewController以及实现UITableViewDataSourceUITableViewDelegate协议来解决这个问题.然后你可以view随心所欲,包括转移你的UITableView下来并添加一个UIImageView.

不过,不确定4.2是否仍然如此.


Gor*_*not 9

编辑(2013年12月16日)

只是想澄清一下,这确实不是一个好主意,原因很多,其中一些列在评论中.你应该真的在做Shaggy Frog的建议,或者使用View Controller Containment.

原始答案

你希望它UIImageView在静止的顶部tableView?如果是这样,你需要将它设置为的子视图,而UINavigationController不是UITableView.最简单的方法是使用[self.view.superview addSubview:tabImageView].(虽然正如Shaggy Frog所说,最好从UITableViewController一个平原变为平原UIViewController,并UITableView手动创建)

如果你想要UIImageView附加到UITableView,那么当你向下滚动,它消失,你可以将它设置为表头与[self.tableView setTableHeaderView:tabImageView]

  • 不将它添加到导航控制器的视图意味着即使将另一个控制器推入堆栈,图像视图仍将保持可见状态?这可能是不可取的. (2认同)