2014-01-16 44 views
1

我正在使用Apple的DateCell示例Xcode项目来弄清楚如何在UITableViewCell中使用UIPickerView,但我在计算示例代码设置的约束条件时遇到了一些麻烦故事板中的UIDatePicker。如何将UIPickerView的约束条件设置为UITableViewCell? (如在Apple DateCell示例中)

链接:https://developer.apple.com/library/ios/samplecode/DateCell/Introduction/Intro.html

上面说的是具有的UIDatePicker相对于实际的UITableViewCell的约束,但是当我试图建立两者之间的关系,我不能。按住Ctrl键从选取器拖到单元格不会突出显示该单元格。我尝试过使用单元格的内容视图而不是单元格本身,但是这并没有产生与示例代码的故事板中相同的结果。

这些是日期选取成立了由项目的约束:

而对于电池:

样的故事板是什么样子:

如何重现上述图像使用约束?

任何帮助将不胜感激。

+0

什么问题?目前还不清楚你想要完成什么或者什么不工作。 – Mundi

+0

基本上,我在问什么步骤重现样本中日期选择器的相同约束和维度。 我在第二段中描述的(在链接之后)基本上是我遇到的问题。在示例项目中,我看到日期选择器被限制为高度为216的表视图单元格。我不知道如何实现此目的。我只能将日期选择器约束到单元格的内容视图,这不是样例故事板中的内容视图,并且不会产生相同的结果。 – ryanthon

+0

您是否尝试连接新项目?您是否尝试删除连接并重新插入连接? – Mundi

回答

0

我发现样本的静态高度不是我想要使用的,因为我有一些单元格中包含大量需要为每个单元格设置变量高度的文本。因此,我使用UITableViewAutomaticDimension来自动调整所有单元格的高度,而不是样例中从预定义的故事板大小抓取拾取器单元格高度的方法。如果你不希望自动高度,它仍然很容易适应以下解决方案的高度设置为静态值,正如我在第3步

  1. 设置的tableview行的高度提自动当视图负载:

    - (void)viewWillAppear:(BOOL)animated { 
        [super viewWillAppear:animated]; 
        self.tableView.estimatedRowHeight = 60.0; // Set your average height here. 
        self.tableView.rowHeight = UITableViewAutomaticDimension; 
    } 
    
  2. 添加预测的高度,使其正常工作(至少在iOS版8)。如果你不添加这个,当它绘制单元高度时,你可能会得到一些错误行为。

    - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { 
        return UITableViewAutomaticDimension; 
    } 
    
  3. 对于汽车高度,记住,如果你有一个删除tableView:heightForRowAtIndexPath:定义,因为它可能与自动设置干扰。

    // Don't define this at all if you want the picker cell to have auto height. 
    //- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    //{ } 
    
    • 如果你想使用一个静态高度为拾取单元格,然后定义tableView:heightForRowAtIndexPath:功能,只是返回静态值,而不是在这里一样样做它使用自动尺寸。例子是这样的:

      - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
      { 
          // This would return the static height for the picker, but auto heights for the rest of the cells. 
          return ([self indexPathHasPicker:indexPath] ? self.pickerCellRowHeight : UITableViewCellAutoDimension); 
      } 
      
    • 然后你会修改示例设置您的静态高度,而不是在viewDidLoad从帧值抓住它的。

      // obtain the picker view cell's height, works because the cell was pre-defined in our storyboard 
      //UITableViewCell *pickerViewCellToCheck = [self.tableView dequeueReusableCellWithIdentifier:kDatePickerID]; 
      self.pickerCellRowHeight = 216;//CGRectGetHeight(pickerViewCellToCheck.frame); 
      
  4. 而不是试图重新从样品相同的约束,我告诉故事板复位到建议约束的UIPickerView,然后增加了一个。它添加了图片中的前两个,然后我再添加一个来对齐中心X.我的视图碰巧有自动设置中显示的数字,但是您的视图可能会有所不同。

    Storyboard of cell and constraints

    Reset to suggested constraints

  5. 在你还没有做过的情况下,使机械手工作的一部分,以确保数据源和委托的UIPickerView设置为视图控制器用故事板并控制点击和拖动。

    enter image description here

相关问题