Добавление картинки в UIPickerView - PullRequest
0 голосов
/ 06 апреля 2010

UIImageView * one = [[UIImageView alloc] initWithImage: [[UIImage alloc] initWithContentsOfFile: [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "ball1.png"]]];

UIImageView *two = [[UIImageView alloc]initWithImage:[[UIImage alloc] initWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ball2.png"]]] ;
UIImageView *three = [[UIImageView alloc]initWithImage:[[UIImage alloc] initWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"ball3.png"]]] ;

arrayBalls = [[NSArray alloc]initWithObjects:one,two,three,nil];

Я использовал приведенный выше код для отображения изображения в UIPickerView. Но приложение аварийно завершает работу при выполнении этого кода.

Кто-нибудь, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 16 августа 2011

У меня была такая же проблема с pickerView, как и у вас, и я исправил ее.

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

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

(NSString *)pickerView: (UIPickerView *)pickerView titleForRow: (NSInteger)row forComponent (NSInteger)component

Обратите внимание, что вышеуказанная функция возвращает объект NSString, но ваше представление выбора должно возвращать UIImageView. Поэтому XCode уведомит неоднозначную ошибку: - [UIImageView isEqualToString:]: нераспознанный селектор, отправленный экземпляру 0x4a21df0 '(UIImageView не равен NSString)

Решение состоит в том, что вы должны использовать другой делегированный метод представления выбора:

(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view

Проблема решена! Если ваша ситуация не такая, как у меня, пожалуйста, уточните вашу проблему более подробно. ^^

0 голосов
/ 07 апреля 2010

Какие ошибки вы получаете, посмотрите на трассировку стека и т. Д. ...

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

UIImageView *one = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ball1.png"]]
...
NSArray* ballsArray = [NSArray arrayWithObjects:one,two,three,nil];
[one release];
[two release];
[three release];

Убедитесь, что вы добавляете изображения в свой проект (щелкните правой кнопкой мыши> добавить> добавить существующие файлы)

Проверьтеиз лекции CS139P по управлению памятью.

ЗАПИШИТЕ свой комментарий: тип ошибки, которую вы получаете, возникает, когда вы не правильно сохранили объект, а затем пытаетесь отправить ему сообщение.

Выкод, вероятно, выглядит примерно так

@interface SomeObject : NSObject{
   NSString* aString;
}

@implementation SomeObject

-(void)someMethod{
    aString = [NSString stringWithString:@"A String"];
    ...
}
-(void)someOtherMethod{
    [aString isEqualToString:@"A String"];
    ...
}

Если вы не понимаете, почему это не удается, вам действительно нужно вернуться и проверить, как управление памятью работает с iphone.

Пожалуйстаскачайте и прослушайте CS193P Лекцию об управлении памятью из iTunes U, она мне помогла, она вам поможет.

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