Является ли buttons
массивом, который вы инициализировали (я полагаю, поскольку вы используете addObject
, который предназначен только для массивов)?Вы говорите, что он должен добавить его в список прокрутки (я предполагаю, что вы имели в виду представление прокрутки), но ошибка, которую вы выдаете, создает впечатление, что вы передаете его в строковый объект.
Чтобы добавитьдля просмотра с прокруткой вы должны сделать:
[someScrollview addSubview:btn];
Кроме того, я нигде не вижу, чтобы вы устанавливали рамку объекта, когда он добавляется в представление прокрутки.Это то, что вам нужно сделать перед добавлением его в качестве подпредставления.
Работает у меня просто отлично (обратите внимание, вы должны инициализировать и выпустить изменяемый массив где-то, я просто сделал это быстро):
Выход на консоль = 2010-07-29 15: 54: 54.563 Факел [52222: 207] Да Привет и 0
Код, который я использовал:
NSMutableArray *buttons; // in your .h interface
@property (nonatomic, retain) NSMutableArray *buttons; // in your .h
@synthesize buttons; // in your .m
(...)
-(IBAction) pushMyButtons {
buttons = [[NSMutableArray alloc] init];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setTitle:@"Hi" forState:UIControlStateNormal];
[btn setFrame:CGRectMake(65, 300, 200, 23)];
[btn addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside]; // handle touch
[buttons addObject:btn];
[self.view addSubview:btn];
}
//a data button was pressed
-(void) buttonTouched:(id)sender{
int index = [buttons indexOfObject:sender];
NSString *key = [sender titleLabel].text;
NSLog(@"Yep %@ and %d", key, index);
}