lna*_*ger 5 objective-c storyboard uitableview ios
当我创建一个静态表视图并将其放在普通视图控制器中时,我收到一个错误,指出静态表视图必须在UITableViewController中.
我想要的是iPad上的一个视图,它有一个占据屏幕大部分的静态表格视图,但是它下面的标准UIView始终保持可见,并且有几个标签,我根据表格视图中的内容进行更新.
有没有办法使用UITableViewController并使tableView不是全屏,以便我可以在故事板中添加子视图?
如果不是,可以在代码中完成吗?
任何提示将不胜感激!
你需要的是一个常规的UITableViewController(所以你得到所有的静态单元行为),然后你的视图作为表视图的子视图,但管理使它始终坚持在屏幕的底部.Apple将此演示为WWDC.这就是我的所作所为(在我的例子中,我有一个UIDatePicker我总是希望锚定在底部):
在viewDidLoad,创建视图并将其添加为表视图的子视图.将它放在表格视图的底部.
[self.tableView addSubview:self.datePicker];
[self updateDatePickerBounds];
Run Code Online (Sandbox Code Playgroud)
实现,scrollViewDidScroll以便您可以在表视图滚动时强制将视图强制显示在屏幕底部:
- (void) scrollViewDidScroll:(UIScrollView *)scrollView
{
// Keep the date picker floating above the table view, anchored to the bottom of the view
[self updateDatePickerBounds];
}
Run Code Online (Sandbox Code Playgroud)
然后实现一个正确定位视图的函数:
- (void) updateDatePickerBounds
{
// Keep the date picker floating above the table view, anchored at the bottom
CGRect tableBounds = self.tableView.bounds;
CGRect pickerFrame = self.datePicker.frame;
pickerFrame = CGRectMake(tableBounds.origin.x,
tableBounds.origin.y + CGRectGetHeight(tableBounds) - CGRectGetHeight(pickerFrame),
tableBounds.size.width,
pickerFrame.size.height);
self.datePicker.frame = pickerFrame;
}
Run Code Online (Sandbox Code Playgroud)
最后,如果您不希望表格视图位于底部视图下方,只需将表格视图设置为与视图的contentInset高度相匹配即可.
我也叫我的updateDatePickerBounds方法viewWillAppear.我忘记了为什么我必须这样做.
真正的答案是创建一个自定义容器控制器。
例如,您可以在导航控制器内有一个静态表视图。因此,您需要创建一个容器类,例如导航控制器或任何您的容器类,并将静态表视图控制器添加到其中。