默认情况下,当我在IB中拖出一个TableViewController时,tableview会占用所有屏幕,即使用户滚动tableview,也无法添加一个保持原位的UIView(如果我说添加带有一些按钮的UIView,那么当我滚动桌面视图时,UIView也会滚动。)
我的程序使用UITableViewController子类来控制tableview,即使用户滚动,顶部栏保持静态的最简单方法是什么?
简单,而不是使用UITableViewController只需使用UIViewController,其中放置了UITableView。 (留出空间让您在表格上方或下方添加辅助视图)这样,您可以让视图控制器的视图占据整个屏幕,并手动定义其中的表格视图的框架。将需要一些重新安排,但将满足您的需求。
您需要注意的唯一真正的区别是,您需要使视图控制器符合UITableViewDelegate和UITableViewDatasource协议,以及自己声明表视图的出口。
@property (weak,nonatomic) IBOutlet UITableView *tableView;
同样重要的是要记住,有些函数只能在像Qazxswpoi这样的UITableViewController上使用,但是你总是可以自己复制它们。
clearsSelectionOnViewWillAppear
我推荐的方法(我认为这是Apple鼓励的设计模式)是使用embed segue将表视图控制器插入包含其他视图的父控制器。这有助于保持模块化并有助于使整个应用程序结构易于理解。
基本步骤如下:
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathsForSelectedRows animated:YES];
}
方法中,检查嵌入segue的标识符并进行任何其他连接。视图控制器和视图关系是自动建立的,但您可能需要配置表视图控制器并保留对它的引用。以编程方式,使用Swift约束。在我看来,这个解决方案更清洁:
prepareForSegue