С 2011 года я использую код Objective-C для своего медицинского приложения, которое в основном имеет 5 вкладок со связанными UITableViews, в 3 из которых используются настраиваемые ячейки. Первоначально при использовании темного режима я обнаружил, что пользовательские ячейки не переходят в темный режим автоматически. Вместо этого мне нужно было реализовать приведенный ниже код, чтобы протестировать темный режим и внести соответствующие изменения в текст ячейки и фон.
Проблема в том, что изменения темного режима не происходят для пустых ячеек на первой вкладке, выше или ниже заполненных ячеек; они остаются пустыми белыми. Однако аналогичные пустые ячейки в UITableViews, связанных со вторыми двумя вкладками, ДЕЙСТВИТЕЛЬНО ведут себя, как ожидалось, в темном режиме.
На примерах изображений ниже показаны ячейки, отображаемые на первой и третьей вкладках. В этот момент мне интересно, есть ли ошибка в ОС или я просто не реализую правильные изменения, чтобы объяснить, почему темный режим не работает должным образом только на первой вкладке.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CustomCellIdentifier = @"CustomCellIdentifier ";
CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier: CustomCellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:self options:nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass:[CustomCell class]])
cell = (CustomCell *)oneObject;
}
NSDictionary *dictionary = [self.tableDataSource objectAtIndex:indexPath.row];
cell.calculationLabel.text = [dictionary objectForKey:@"Title"];
[cell.calculationLabel setLineBreakMode:NSLineBreakByWordWrapping];
cell.calculationLabel.numberOfLines = 0;
//Make color changes in cells relevant to Dark mode, if present.
if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) { //Dark mode
cell.calculationLabel.textColor = [UIColor whiteColor];
cell.calculationLabel.backgroundColor = [UIColor blackColor];
cell.statusLabel.backgroundColor = [UIColor blackColor];
cell.favoriteStatus.backgroundColor = [UIColor blackColor];
cell.backgroundColor = [UIColor blackColor];
} else { //Light mode
cell.calculationLabel.textColor = [UIColor blackColor];
cell.calculationLabel.backgroundColor = [UIColor whiteColor];
cell.statusLabel.backgroundColor = [UIColor whiteColor];
cell.favoriteStatus.backgroundColor = [UIColor whiteColor];
cell.backgroundColor = [UIColor whiteColor];
}
cell.statusLabel.textColor = [UIColor systemGreenColor];