使一个TableView只占据屏幕的一部分

默认情况下,当我在IB中拖出一个TableViewController时,tableview占据了所有的屏幕,并且没有办法添加一个UIView,即使当用户滚动tableview的时候,它仍然保留在原位(如果我说用一些button添加一个UIView,当我滚动UIView将滚动的tableview。)

我的程序使用UITableViewController子类来控制tableview,即使用户滚动时顶部栏保持静态,最简单的方法是什么?

简单的说,不是使用UITableViewController,而是使用UIViewController和UITableView。 (留出空间让您在表格的上方或下方添加辅助视图)这样,您可以让视图控制器的视图占据整个屏幕,并在其中手动定义表格视图的框架。 将会有一些重新安排需要,但将适合您的需求。

在这里输入图像说明

唯一需要注意的是你需要使你的视图控制器符合UITableViewDelegate和UITableViewDatasource协议,并声明自己的表视图的出口。

@property (weak,nonatomic) IBOutlet UITableView *tableView; 

请记住,有几个函数只能在UITableViewController上使用,比如clearsSelectionOnViewWillAppear ,但是你可以自己复制它们。

 - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView deselectRowAtIndexPath:self.tableView.indexPathsForSelectedRows animated:YES]; } 

我推荐的方法(我认为这是苹果鼓励的devise模式)是使用embedded式segue将表视图控制器插入到包含其他视图的父控制器中。 这有助于保持模块化,并帮助使整个应用程序结构易于理解。

基本步骤如下:

  1. 在IB中创build一个父视图控制器并添加一个容器视图
  2. 通过从容器视图拖动到要embedded的视图控制器,创build一个embedded段。
  3. 给segue一个像“EmbedMyTable”这样的标识符。
  4. 在父控制器的prepareForSegue方法中,检查你的embedded式segue的标识符,并做任何额外的接线。 视图控制器和视图关系是自动build立的,但您可能需要configuration表视图控制器并保留对其的引用。