1

その下に Tapku カレンダーとテーブル ビューがあります。カレンダーには静的な高さがなく、その中の行数に依存し、月ごとに異なります。いくつかの月のように、5 行があり、6 行もあります。カレンダーの終了位置から開始するテーブル フレームを設定したい。以下の方法を試しましたが、うまくいきません。

- (void)calendarMonthView:(TKCalendarMonthView *)monthView monthDidChange:(NSDate *)d {
NSLog(@"calendarMonthView monthDidChange:%@",d);

  [self.mTableView setFrame:CGRectMake(0, calendar.frame.origin.y + calendar.frame.size.height, 320, 308 - calendar.frame.size.height - calendar.frame.origin.y)];
  [self.mTableView reloadData];

NSLog(@"calendar height:%f", calendar.frame.size.height);
}

コンソールで calendar height:0.000000 を印刷しています。以上をご案内します。

4

1 に答える 1

1

これがまだあなたに関連している場合は、UI>Calendar>Month の下の TapkuLibrary の TKCalendarMonthTableViewController.m ファイルからこれを試してください。私にとってはうまくいきました。あなたとまったく同じ問題がありました。

- (void)calendarMonthView:(TKCalendarMonthView *)monthView monthDidChange:(NSDate *)month animated:(BOOL)animated {
    [self updateTableOffset:animated];
}

- (void) updateTableOffset:(BOOL)animated{

    if(animated){
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.4];
        [UIView setAnimationDelay:0.1];
    }


    float y = self.monthView.frame.origin.y + self.monthView.frame.size.height;
    self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, y, self.tableView.frame.size.width, self.view.frame.size.height - y );
    if(animated) [UIView commitAnimations];
}

最初から高さを調整するには、loadView で、カレンダーを初期化した後に日付を選択しました。

calendar =  [[TKCalendarMonthView alloc] initWithSundayAsFirst:NO];
[calendar selectDate:[NSDate date]];

そうすれば、フレームは monthDidChange の後に調整されるだけではありません。

それが役に立ったことを願っています!

于 2013-08-06T09:17:17.437 に答える