У меня есть UITableView. Я создаю программно вместе с ячейками, который отображает список шрифтов, которые пользователь может выбрать, чтобы изменить шрифт, который они читают. Однако, нажав на ячейку в представлении таблицы, семейство шрифтов, отправленное обратно с делегатом, не является шрифтом, который отображается в ячейке. Однократное нажатие «Times New Roman» изменит его на Helvetica, а затем оно изменит его на Baskerville.При выборе ячейки в моем UITableView выбор кажется случайным
Вот соответствующий код:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
// Depending on which row (font) they selected, use the delegate to change the
// reading text to that font
switch (indexPath.row) {
case 0:
[self.delegate changeFontTo:@"Helvetica"];
break;
case 1:
[self.delegate changeFontTo:@"Times New Roman"];
break;
case 2:
[self.delegate changeFontTo:@"Baskerville"];
break;
case 3:
[self.delegate changeFontTo:@"OpenDyslexic"];
break;
}
}
И метод делегата:
- (void)changeFontTo:(NSString *)fontFamily {
self.textToReadLabel.font = [UIFont fontWithName:fontFamily size:self.textToReadLabel.font.pointSize];
}
И если это помогает, вот метод делегата UITableView для создания строк:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier = @"FontCell";
FontCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath];
int row = indexPath.row;
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
cell.fontFamilyLabel.text = self.fonts[row];
if ([self.fonts[row] isEqualToString:@"Helvetica"]) {
cell.fontFamilyLabel.font = [UIFont fontWithName:@"Helvetica" size:17.0];
}
else if ([self.fonts[row] isEqualToString:@"Times New Roman"]) {
cell.fontFamilyLabel.font = [UIFont fontWithName:@"Times New Roman" size:17.0];
}
else if ([self.fonts[row] isEqualToString:@"Baskerville"]) {
cell.fontFamilyLabel.font = [UIFont fontWithName:@"Baskerville" size:17.0];
}
else if ([self.fonts[row] isEqualToString:@"Dyslexic"]) {
cell.fontFamilyLabel.font = [UIFont fontWithName:@"OpenDyslexic" size:17.0];
}
return cell;
}
Действительно смущен относительно того, что это может быть. Я запутался и запутался в коде, но я чувствую, что это может быть просто концепция, которую я не понимаю, что вызывает проблему.
'tableView: didDeselectRowAtIndexPath:' вместо 'tableView: didSelectRowAtIndexPath:' может быть причиной этого. – Zen