调整表格视图大小

问题描述

| 我正在寻找一种方法,使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。