Xcode iphone сохранить ссылку на UIButtons в NSMutableArray - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть ViewController со многими .xib-файлами (UIViews) и множеством UIButton.Поэтому идея состоит в том, чтобы сохранить их в массиве [ViewID] [ButtonID] для удобного доступа к ним с помощью счетчиков, чисел и т. Д.

***ViewController.h
IBOutlet UIButton *button0101;
IBOutlet UIButton *button0102;
IBOutlet UIButton *button0103;
IBOutlet UIButton *button0201;
...
NSMutableArray *buttonsArray;
...
@property (nonatomic, retain) IBOutlet UIButton *button0101;
@property (nonatomic, retain) IBOutlet UIButton *button0102;
@property (nonatomic, retain) IBOutlet UIButton *button0103;
@property (nonatomic, retain) IBOutlet UIButton *button0201;
...
@property (nonatomic, retain) NSMutableArray *buttonsArray;


***ViewController.m
@synthesize allThoseButtons/Arrays;
...
-(void)viewDidLoad {
self.buttonsArray = [[NSMutableArray alloc] init];

NSMutableArray *helpArray = [[NSMutableArray alloc] init];
[helpArray addObject:self.button0101];
[helpArray addObject:self.button0102];
[helpArray addObject:self.button0103];
[self.buttonsArray addObject:helpArray];
[helpArray removeAllObjects];

[helpArray addObject:self.button0201];
...
[self.buttonsArray addObject:helpArray];
[helpArray removeAllObjects];
...

Я могу получить доступ к массиву, я могу вывести правильные предопределенные заголовкикнопки и т. д., но я не могу изменить кнопки (например, backgroundimage, titleLabel и т. д.) при доступе к ним с помощью кнопок Array.

-(IBAction)pushButton:(id)sender {
//this does work
[(UIButton *)sender setTitle:@"Test" forState:UIControlStateNormal];

//this has no effect at all (even if I have chosen the correct button in the array, I can check that using the predefined tag and title)
[(UIButton *)[helpButtons objectAtIndex:index2] setTitle:@"Test" forState:UIControlStateNormal];
}

Кажется, что ссылка, сохраненная в NSMutableArray, отличается от интерфейса InterfaceBuilder.но новый объект.Если я выведу объект напрямую через NSLog, я даже смогу увидеть другой идентификатор памяти.Но что я сделал не так?Как я могу сохранить реальную ссылку в массиве для доступа к этим кнопкам?

Спасибо и привет, Пэт

...