Как правильно выровнять UITableViewCells, когда только некоторые имеют imageView? - PullRequest
0 голосов
/ 21 мая 2010

Я новичок в программировании iPhone и работаю над своим первым реальным приложением (то есть, которое не написано в книге или в Интернете), и я столкнулся с небольшой проблемой, которую я мог бы решить множеством способов, но чувствую, что это должно бытьбыть хорошим решением, которое, возможно, мне просто не хватает.

Вот сценарий: у меня есть UITableView с кучей стандартных UITableViewCell s в нем.Что я хочу сделать, это установить зеленую галочку, когда ячейка выбрана, и у меня эта часть работает ( примечание: Я уже использую accessoryType для чего-то другого, поэтому я не могу использоватьэто для галочки ... кроме того, это не так красиво).К сожалению, когда я переключаю галочку следующим образом:

if (...) {
  cell.imageView.image = [UIImage imageNamed:@"checkmark.png"];
} else {
  cell.imageView.image = nil;
}

Это заставляет метку ячейки подпрыгивать назад и вперед в зависимости от того, проверена она или нет.Как правильно выровнять текст ячейки (задается с помощью cell.textLabel.text) независимо от того, установлено или нет изображение?Решения, которые я придумала:

  1. Создайте пустое изображение 40x40 png в Photoshop и установите для него значение
  2. Создайте пустое изображение 40x40 исключительно в коде
  3. Установите некоторые настройки, о которых я не знаю, которые выровняют их для меня
  4. Создайте подкласс UITableCellView, который делает то, что мне нужно (что было бы глупо, я бы просто выбрал вариант 1)..)

Предложения?Мысли?Комментарии?Большое спасибо: -)

PS Я бы хотел, чтобы решение работало с ОС 3.0 и 4.0, если это что-то изменит.

1 Ответ

1 голос
/ 21 мая 2010

Вариант 1 - это путь для стандартной ячейки.

Строго говоря, вам не нужно создавать подкласс UITableViewCell для настройки макета. Вы можете добавить любые представления, которые вы хотите, в contentView. Таким образом, вы можете добавить UILabel и UIImageView в contentView вместо использования свойств imageView и textLabel.

...