UIImageView в подклассе ячеек таблицы не работает как IBOutlet - PullRequest
0 голосов
/ 27 октября 2011

У меня есть подкласс UITableViewCell, ничего особенного.Я добавил несколько ярлыков и UIImageView.Все выходы подключены к ячейке табличного представления (представление), а не к владельцу файла.Если бы я прикрепил их к владельцу файла, множество ошибок, связанных с тем, что они не соответствуют значению ключа, и прикреплением их к ячейке табличного представления, фактически решило эту проблему.Я могу правильно обращаться к меткам.

Однако один из моих IBOutlets теперь не подключен должным образом: UIImageView.IBOutlet настроен, и то, что работает для меток, не помогает при просмотре изображений.Вот некоторый код:

[[cell imageView] initWithImage:thumbnail];
[self.view addSubview:[cell imageView]];

Представьте, что миниатюра представляет собой UIImage, который не равен нулю.cell.imageView не имеет значения ни один.Верхняя строка не показывает изображение в нужном месте (где я установил его в xib), хотя нижняя строка фактически добавляет изображение на экран - не в нужном месте.здесь происходит?Как я могу получить правильное решение, либо добавив его правильно к владельцу файла (без жалоб на соответствие значения ключа), либо правильно подключив его через ячейку табличного представления.Любая помощь с благодарностью!

С уважением,

Reinder

1 Ответ

0 голосов
/ 27 октября 2011

Эта строка:

[[cell imageView] initWithImage:thumbnail];

звучит довольно странно.Если imageView уже был инициализирован, например, с помощью пера, тогда нет необходимости повторно инициализировать снова (с нежелательными результатами, поскольку init должен вызываться один раз в жизни объекта).Вместо этого, если экземпляр imageView еще не был alloc-init, тогда [cell imageView] будет нулевым, и вызов initWithImage: не будет иметь никакого эффекта вообще.

Таким образом, вы говорите, что cell.imageView не равен nil,поэтому ваш init methodWithImage: метод, вероятно, изменит кадр представления изображения, и это объясняет, почему оно было перемещено куда-то еще, чем ваша xib (возможно, оно было помещено в начало представления ячейки).Не забывайте, что когда изображение загружается из xib, вместо этого вызывается метод initWithCoder:

Что вы можете сделать для обхода, это код (не проверенный), который заменяет существующую ячейку новойcell:

CGRect oldFrame = cell.imageView.frame;
UIImageView *newImageView = [[[UIImageView alloc] initWithImage:thumbnail] autorelease];
newImageView.frame=oldFrame;
[self.view addSubview:newImageView];
cell.imageView=newImageView;

Конечно, это решение не элегантно, и было бы лучше, если бы вы могли исправить проблемы с KVC.Причина, по которой вы получаете эти ошибки, мне не ясна, я должен увидеть код и xib.Он не понимает, что вы имеете в виду под словом «не работает».Там не должно быть уловок, если только вы не будете поражены такими ошибками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...