UIRefreshControl предупреждает: CUICatalog: недопустимое имя актива или недопустимый коэффициент масштабирования

Я вызываю эту функцию в моем viewDidLoad

- (void)addRefreshControl { 
    refreshControl = [[UIRefreshControl alloc] init];
    [refreshControl setAttributedTitle:[[NSAttributedString alloc] initWithString:NSLocalizedString(@"Pull to refresh", nil)]];
    [refreshControl addTarget:self
                       action:@selector(refreshView)
             forControlEvents:UIControlEventValueChanged];

    [self setRefreshControl:refreshControl];
}

Почти каждый раз, когда я тяну для обновления, я получаю предупреждение с этим сообщением в отладчике CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000

Однако это не прерывает работу моего приложения, я хотел бы понять, откуда пришло это сообщение, и избежать его.


person Martijn    schedule 22.02.2014    source источник


Ответы (2)


Проверьте, есть ли у вас парное изображение @2x.

Если вы используете раскадровку, также проверьте, есть ли у изображения имя в поле изображения.

Просто со мной случилось, что изображение было в раскадровке, но имя в поле было очищено.

person Luismi    schedule 13.03.2014
comment
Да, у меня есть парное изображение @2x, и да, имя изображения такое же. После долгих поисков + проб и ошибок я обнаружил, что вам действительно нужно NSString, чтобы имя изображения исходило из словаря, как это сделал мой. Спасибо! - person Martijn; 03.08.2014

Таким образом, в основном это не имело никакого отношения к элементу управления обновлением, а было связано с именем изображения, используемым при инициализации изображения. Я делал это:

[UIImage imageNamed:[someDictionary objectForKey:@"imageKey"]];

Но что мне действительно нужно было сделать, так это:

[UIImage imageNamed:[NSString stringWithFormat:@"%@",[someDictionary objectForKey:@"imageKey"]]];

Поэтому, превратив его в NSString, ошибка больше не возникает. Конечно, вам нужно иметь парное изображение @2x, но даже если они у вас есть, без NSString'а имени, вы все равно получите эту ошибку.

person Martijn    schedule 03.08.2014