问题描述
|
我正在寻找一种方法,使UITableViewController的顶部具有UITableView,并且UIPickerView波纹管(具有固定位置)在下面。
我找到了使用下面的代码修复选择器的解决方案:
- (void)viewDidLoad {
[super viewDidLoad];
_picker = [[UIPickerView alloc] initWithFrame:CGRectZero];
_picker.showsSelectionIndicator = YES;
_picker.dataSource = self;
_picker.delegate = self;
// Add the picker to the superview so that it will be fixed
[self.navigationController.view addSubview:_picker];
CGRect pickerFrame = _picker.frame;
pickerFrame.origin.y = self.tableView.frame.size.height - 29 - pickerFrame.size.height;
_picker.frame = pickerFrame;
CGRect tableViewFrame = self.tableView.frame;
tableViewFrame.size.height = 215;
self.tableView.frame = tableViewFrame;
[_picker release];
}
问题在于表格视图,似乎无法调整大小,所以我看不到所有结果。
谢谢你的建议。
解决方法
如果要管理的视图由多个子视图(其中一个是表视图)组成,则应使用
UIViewController
子类而不是UITableViewController
来管理表视图。您可以添加一个“ 3”子视图,并使您的控制器实现“ 4”和“ 5”协议。
“ 2”类的默认行为是使表视图填充导航栏和选项卡栏之间的屏幕(如果存在)。
从适用于iOS的Table View编程指南中:
注意:您应该使用
UIViewController子类而不是
UITableViewController的子类
管理一个表视图,如果要
受管由多个
子视图,其中之一是表格
视图。的默认行为
UITableViewController类是使
表格视图填充屏幕之间
导航栏和标签栏(如果
两者都存在)。
如果您决定
使用UIViewController子类,而不是
而不是
UITableViewController管理一个
表格视图,您应该执行
上面提到的几个任务
符合人机界面
准则。清除中的任何选择
表格视图在显示之前,
实现viewWillAppear:方法
以清除选定的行(如果有)
调用deselectRowAtIndexPath:animated:。
表格视图之后
显示时,您应该滚动滚动条
通过发送一个
flashScrollIndicators消息发送到
表格视图你可以在一个
覆盖viewDidAppear:方法
UIViewController。