调整表格视图的大小

时间:2011-06-21 21:17:04

标签: iphone uitableview resize

我正在寻找一种方法,让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];
}

问题在于tableview,似乎调整大小不起作用,所以我看不到所有结果。

感谢您的建议。

1 个答案:

答案 0 :(得分:5)

如果要管理的视图由多个子视图组成,其中一个是表视图,则应使用UIViewController子类而不是UITableViewController来管理表视图。您可以添加UITableView子视图,并使控制器实施UITableViewDelegateUITableViewDataSource协议。

UITableViewController类的默认行为是使表格视图填充导航栏和标签栏之间的屏幕(如果存在)。

来自Table View Programming Guide for iOS

  

注意:您应该使用   UIViewController子类而不是   UITableViewController的子类   如果视图是管理表视图   托管由多个组成   子视图,其中一个是表   视图。的默认行为   UITableViewController类是要做的   表格视图填充屏幕之间   导航栏和标签栏(如果   要么就在场。)

     

如果你决定   请使用UIViewController子类   而不是一个子类   UITableViewController来管理一个   表视图,你应该执行一个   上面提到的几项任务   符合人机界面   准则。清除任何选择   表格视图显示之前,   实现viewWillAppear:方法   清除所选行(如果有)   调用deselectRowAtIndexPath:animated:。   在表视图之后   显示,你应该闪烁滚动   通过发送一个查看滚动指示器   flashScrollIndicators消息给   表格视图;你可以这样做   覆盖viewDidAppear:方法   UIViewController。