Обновление UITableView от UITableViewCell

Многие из них работают, но либо требуют jQuery, либо строчки javascript жалуются на синтаксис. Учитывая, что ваш первоначальный вопрос требует "JavaScript" (не jQuery, не Modernizr) способа решения этой проблемы, вот простая функция, которая работает каждый раз. Это также как можно меньше.

function isTouchDevice() {
    return !!window.ontouchstart;
}

console.log(isTouchDevice());

Еще одно преимущество, которое я упомяну, заключается в том, что этот код не зависит от инфраструктуры и устройств. Наслаждайтесь!

7
задан Arrel 25 June 2009 в 16:51
поделиться

5 ответов

Я сделал именно то, что вы пытаетесь сделать. То, что вы ищете, - это needsLayout . А именно (это обозреватель уведомлений в моем подклассе UITableViewCell):

- (void)reloadImage:(NSNotification *)notification
{
    UIImage *image = [[SSImageManager sharedImageManager] getImage:[[notification userInfo] objectForKey:@"imageUrl"];
    [self setImage:image];
    [self setNeedsLayout];
}

Это появится на вашем изображении без необходимости перезагружать всю таблицу, что может стать очень дорогостоящим.

18
ответ дан 6 December 2019 в 08:16
поделиться

Менее затратно перезагружать только те разделы / строки, которые нуждаются в перезагрузке. В iPhone SDK 3.0 есть несколько способов сделать это.

0
ответ дан 6 December 2019 в 08:16
поделиться

попробуйте [yourtableview reloadData]; после установки изображения на новое изображение

-1
ответ дан 6 December 2019 в 08:16
поделиться

Хмм. Итак, imageWasLoaded: - это метод делегата, вызываемый некоторым асинхронным кодом загрузки изображений? На самом деле кажется странным, что установка self.image не обновляет изображение. Вы пытались добавить в ячейку свой собственный UIImageView вместо использования свойства изображения? Это может быть своего рода взлом, но таким образом изображение должно обновляться сразу (без необходимости перезагружать всю таблицу, что определенно нежелательно).

Еще лучше: если вы используете SDK 3.0, вы можете использовать новое свойство imageView в UITableViewCell (хотя я этого не пробовал):

self.imageView.image = newImage;

На самом деле мне нужно было сделать то же самое несколько недель назад. Однако мой подход заключался в создании подкласса UIImageView и выполнении всей асинхронной загрузки / обновления изображений в этом классе. Основная причина, по которой я сделал это таким образом, заключалась в том, что я хотел иметь общий и многоразовый компонент, который можно было бы использовать в различных ячейках представления таблицы (или где-либо еще).

0
ответ дан 6 December 2019 в 08:16
поделиться

Получите ссылку на содержащий UITableView , используя свойство superview . Затем сообщите об этом в « reloadData »:

UITableView *parentTable = (UITableView *)self.superview;
[parentTable reloadData];
5
ответ дан 6 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: