ある期間のイベントを表示する*UITableView
、ある種のカレンダーがあります。各セクションは曜日で、各イベントはカスタム *UITableViewCell
です。イベントは の中にあり*NSArray
、日付と時刻に応じて、これらのイベントはテーブルの 1 つのセクションに割り当てられます。
セクション内の行数は問題ありませんが、セルが表示されると、一部のセルが他のセクションの他のセルでコンテンツを繰り返し始め、情報を上書きします。また、このセルには割り当てられた色があり、didSelectRowAtIndexPath
クリックすると背景がその色に変わるメソッドでは、上記と同じことが起こり、他のセクションの他のセルも背景色を更新します。
それは細胞の再利用に多少関係していると思いますが、何が間違っているのかわかりません。
PD: 私は iOS を初めて使用するので、お気軽にコードの追加や修正などをお願いします。アドバイスをありがとうございます。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CalendarDayCell *cell = [tableView dequeueReusableCellWithIdentifier:@"CalendarDayCell"];
if (cell == nil) {
NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"CalendarDayCell" owner:self options:nil];
cell = [nibs objectAtIndex:0];
}
CalendarEvent *ce = self.events[indexPath.row];
NSString *initHr = [self formatDateGetHour: ce.timestart];
... sets cell info ...
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
UIColor *bgColor = [self lighterColorForColor:[self colorWithHexString:ce.color]];
CalendarDayCell *cell = (CalendarDayCell *)[_calendarTable cellForRowAtIndexPath:indexPath];
cell.container.backgroundColor = bgColor;
...
}
セクション内の行の計算を行う方法は次のとおりです
- (void) calculateRowsInSections
{
mondayEventsCount = 0, tuesdayEventsCount = 0, wednesdayEventsCount = 0, thursdayEventsCount = 0, fridayEventsCount = 0, saturdayEventsCount = 0, sundayEventsCount = 0;
if (self.events.count) {
for (CalendarEvent* ce in self.events) {
if ([self getDayOfWeek : ce.timestart] == 2) mondayEventsCount++;
else if ([self getDayOfWeek : ce.timestart] == 3) tuesdayEventsCount++;
else if ([self getDayOfWeek : ce.timestart] == 4) wednesdayEventsCount++;
else if ([self getDayOfWeek : ce.timestart] == 5) thursdayEventsCount++;
else if ([self getDayOfWeek : ce.timestart] == 6) fridayEventsCount++;
else if ([self getDayOfWeek : ce.timestart] == 7) saturdayEventsCount++;
else if ([self getDayOfWeek : ce.timestart] == 1) sundayEventsCount++;
}
}
}
何が起こっているかのいくつかの画像: