使TableView只占用屏幕的一部分

问题描述 投票:3回答:3

默认情况下,当我在IB中拖出一个TableViewController时,tableview会占用所有屏幕,即使用户滚动tableview,也无法添加一个保持原位的UIView(如果我说添加带有一些按钮的UIView,那么当我滚动桌面视图时,UIView也会滚动。)

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

ios uitableview uiview interface-builder
3个回答
5
投票

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

您需要注意的唯一真正的区别是,您需要使视图控制器符合UITableViewDelegate和UITableViewDatasource协议,以及自己声明表视图的出口。

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

同样重要的是要记住,有些函数只能在像Qazxswpoi这样的UITableViewController上使用,但是你总是可以自己复制它们。

clearsSelectionOnViewWillAppear

3
投票

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

基本步骤如下:

  1. 在IB中创建父视图控制器并添加容器视图
  2. 通过从容器视图中拖动到要嵌入的视图控制器来创建嵌入segue。
  3. 给segue一个像“EmbedMyTable”这样的标识符。
  4. 在父控制器的- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.tableView deselectRowAtIndexPath:self.tableView.indexPathsForSelectedRows animated:YES]; } 方法中,检查嵌入segue的标识符并进行任何其他连接。视图控制器和视图关系是自动建立的,但您可能需要配置表视图控制器并保留对它的引用。

1
投票

以编程方式,使用Swift约束。在我看来,这个解决方案更清洁:

prepareForSegue
© www.soinside.com 2019 - 2024. All rights reserved.