调整表格视图大小

3

我正在寻找一种方法,可以让UITableViewController在顶部拥有一个UITableView,在下面拥有一个UIPickerView(并且位置固定)。

我已经找到了下面的代码来解决固定picker的问题:

- (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
如果您将控制器更改为UIViewController,然后手动添加UITableView,那么它是否能正常工作? - Katfish
那就是解决方案。谢谢 :) - pierrefevrier
1个回答

5
如果要管理的视图由多个子视图组成,其中一个是表视图,则应使用UIViewController子类来管理表视图,而不是UITableViewController。您可以添加一个UITableView子视图,并使您的控制器实现UITableViewDelegateUITableViewDataSource协议来完成此操作。 UITableViewController类的默认行为是使表视图填充导航栏和选项卡栏之间的屏幕(如果存在)。
来自iOS表视图编程指南
注意:如果要管理由多个子视图组成的视图,其中一个是表视图,则应使用UIViewController子类而不是UITableViewController子类来管理表视图。UITableViewController类的默认行为是使表视图填充导航栏和选项卡栏(如果存在)之间的屏幕。
如果决定使用UIViewController子类而不是UITableViewController子类来管理表视图,则应执行上述几个任务以符合人机界面指南。在显示表视图之前清除所选行(如果有),可以通过实现viewWillAppear:方法调用deselectRowAtIndexPath:animated:来完成。在显示表视图后,应通过向表视图发送flashScrollIndicators消息来闪烁滚动视图的滚动指示器; 您可以在UIViewController的viewDidAppear:方法的覆盖中执行此操作。

非常感谢,这就是解决方案。 - pierrefevrier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接