菜鸟教程小白 发表于 2022-12-13 10:16:13

ios - 尝试将内联 UIDatePicker 添加到 UITableViewCell


                                            <p><p>我正在尝试在 TableView 单元格中创建一个内联 DatePicker,类似于 <a href="https://stackoverflow.com/questions/20566304/ios7-uitableviewcell-with-uipickerview-and-uidatepicket-built-inline?noredirect=1#comment44970373_20566304" rel="noreferrer noopener nofollow">this</a>和 <a href="https://stackoverflow.com/questions/18973573/ios-7-how-to-display-a-date-picker-in-place-in-a-table-view" rel="noreferrer noopener nofollow">this</a>所以线程。 </p>

<p>我使用下面的方法创建日期选择器,在加载 View 时调用:</p>

<pre><code>- (void)createDatePicker{
    _datePicker = [init];
    _datePicker.datePickerMode = UIDatePickerModeTime;
    _datePicker.clipsToBounds = YES;
    _datePicker.backgroundColor = ;

    NSLog(@&#34;date picker created&#34;);
}
</code></pre>

<p>然后我检查我的表格 View 中第三部分的底行是否被选中。如果是,并且日期选择器已经没有显示,那么我调用该方法来显示日期选择器的单元格:</p>

<pre><code>- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == HourTimeZoneRow &amp;&amp; self.datePickerIsShowing == NO)
    {
      NSLog(@&#34;Time of day section&#34;);
      ;
    } else
    {
      ;
    }
    ;
}
</code></pre>

<p>以下是显示日期选择器单元格的方法:</p>

<pre><code>- (void)showDatePickerCell {
    ;
    self.datePickerIsShowing = YES;
    self.datePicker.hidden = NO;
    ;
    NSLog(@&#34;Show date picker&#34;);
}
</code></pre>

<p>...并隐藏单元格:</p>

<pre><code>- (void)hideDatePickerCell {
    self.datePickerIsShowing = NO;
    self.datePicker.hidden = YES;
    ;
    NSLog(@&#34;Hide date picker&#34;);
}
</code></pre>

<p>下面是判断table view是否需要额外添加cell来显示UIDatePicker的方法。 </p>

<pre><code>- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
      switch (section) {
            case TableSectionOne:
                return TotalRowsSection1;
                break;
            case TableSectionTwo:
                return TotalRedZoneRows;
                break;
            case TableSectionThree:
                if (self.datePickerIsShowing == YES) {
                  return TableSectionThree + 1;
                }
                else {
                  return TableSectionThree;
                }
                break;
            default:
                return 0;
                break;
      }
    }
</code></pre>

<p>最后,下面的方法应该是确定日期选择器单元格的高度:</p>

<pre><code>- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    CGFloat rowHeight = self.tableView.rowHeight;

    if (indexPath.row == HourTimeZoneRow){
      rowHeight = 164;
    }
    else {
      rowHeight = self.tableView.rowHeight;
    }
    return rowHeight;
}
</code></pre>

<p>However, what's happening is that when the last row of the third section is selected, the date picker is displayed in the first row of the first section.有人对我做错了什么有任何建议吗? </p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您将 datePicker 添加到 tableView,而不是 tableView 中的单元格。</p>

<p>从 showDatePickerCell 中删除这一行:</p>

<pre><code>;
</code></pre>

<p>然后在 cellForItemAtIndexPath 的适当单元格中添加(或取消隐藏)。</p>

<p>(类似:</p>

<pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @&#34;SimpleTableItem&#34;;

    UITableViewCell *cell = ;

    if (cell == nil) {
      cell = [ initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    if (indexPath.row == HourTimeZoneRow) {
      // show the datePicker here
    }

    cell.textLabel.text = ;
    return cell;
}
</code></pre>

<p>)</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 尝试将内联 UIDatePicker 添加到 UITableViewCell,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/28353639/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/28353639/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 尝试将内联 UIDatePicker 添加到 UITableViewCell