NSMutableArray, с объектами UIImage и NSString, не может использовать объекты - PullRequest
0 голосов
/ 07 февраля 2012

Я новичок в xCode и target-c и пытаюсь использовать разные классы для знакомства с языком.

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

Но по какой-то причине они не будут загружаться должным образом?Картинка и текст не отображаются.Что я делаю не так?

@interface TestingViewController : UIViewController{
    UIImageView *pic;
    UITextView *description;
    UISegmentedControl *choice;
    NSMutableArray *infoDescription;
}

@property (nonatomic, retain) IBOutlet UIImageView *pic;
@property (nonatomic, retain) IBOutlet UITextView *description;
@property (nonatomic, retain) NSMutableArray *infoDescription;
@property (nonatomic, retain) IBOutlet UISegmentedControl *choice;

- (IBAction) segmentedControllIndexChanged;

@end

- (void)viewDidLoad
{
   [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
      infoDescription = [[NSMutableArray alloc] init];

}

UIImage *miko = [UIImage imageNamed:@"miko.jpg"];
NSString *mikoString = @"Info about Miko";
UIImage *alex = [UIImage imageNamed:@"alex.jpg"];
NSString *alexString = @"Info about Alex";

[infoDescription addObject:miko];
[infoDescription addObject:mikoString];
[infoDescription addObject:alex];
[infoDescription addObject:alexString];

- (IBAction)segmentedControllIndexChanged{

switch (choice.selectedSegmentIndex) {
    case 0:
       [pic setImage: miko];
        [pic setImage: [infoDescription objectAtIndex:0]];
       [description setText: [[infoDescription objectAtIndex:1] stringValue]];    
        break;
    case 1:
      [pic setImage: [infoDescription objectAtIndex:2]];
      [description setText: [[infoDescription objectAtIndex:3] stringValue]];
        break;
    default:
        break;
}   

}

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

NSMutableArray не должен быть IBOutlet ..

Измените это

@property (nonatomic, retain) IBOutlet NSMutableArray *infoDescription;

на

@property (nonatomic, retain) NSMutableArray *infoDescription;

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

поместите это в ViewDidLoad

infoDescription = [[NSMutableArray alloc] init];
0 голосов
/ 07 февраля 2012

Ваш массив infoDescription, вероятно, равен нулю. Поместите это, прежде чем добавить к нему элементы:

infoDescription = [[NSMutableArray alloc] init];

Кроме того, infoDescription не нужно объявлять как IBOutlet. IBOutlets предназначены только для свойств, которые вы связываете в Интерфейсном Разработчике (обычно представления).

...