2010-04-06 2 views
0

UIImageView * one = [[UIImageView alloc] initWithImage: [[UIImage alloc] initWithContentsOfFile: [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @ "ball1.png"]]];Добавление изображения в UIPickerView

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. Но приложение выполняет сбой при выполнении этого кода.

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

ответ

0

Какие ошибки вы получаете, взгляните на трассировку стека, ЭСТ ...

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

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

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

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

W.R.T. ваш комментарий: Тип ошибки, которую вы получаете, происходит, когда вы неправильно сохранили объект, а затем попытаетесь отправить ему сообщение.

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

@interface SomeObject : NSObject{ 
    NSString* aString; 
} 

@implementation SomeObject 

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

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

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

+0

я получил следующее сообщение об ошибке, пожалуйста, помогите ***, истекающему приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «*** - [UIImageView isEqualToString]: непризнанный селектор направлен например 0x4a21df0» – isarathg

0

У меня была такая же проблема с 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 

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

Смежные вопросы