У меня есть следующий код, который касается одной кнопки и рисует рамку вокруг этой кнопки, а затем следит за тем, чтобы все остальные кнопки не имели границы (всего 8 кнопок). Это метод в одноэлементном классе с именем AnswerButtons. Этот код отлично работает.
- (IBAction)button1WasTouched:(id)sender {
NSLog(@"Hello from button 1");
// retrieve, modify and update clueAnsState
NSMutableArray *newCAS = [[GameData gameData].curData objectForKey:@"clueAnsState"];
[newCAS replaceObjectAtIndex:0
withObject:@"2"];
[[GameData gameData].curData setObject:newCAS
forKey:@"clueAnsState"];
// Highlight the pressed button & make sure other buttons are not highlighted
for (NSInteger idx = 0; idx < 8; idx++) {
NSString *temp = [newCAS objectAtIndex:idx];
if ([temp isEqualToString:@"1"]) {
UIButton *b = [[AnswerButtons answerButtons].buttons objectAtIndex:idx];
[[b layer] setBorderWidth:0.0f];
}
if ([temp isEqualToString:@"2"]) {
UIButton *b = [[AnswerButtons answerButtons].buttons objectAtIndex:idx];
[[b layer] setBorderWidth:2.0f];
}
}
}
Теперь мне нужно использовать этот код для всех 8 кнопок, поэтому я должен написать метод с одним аргументом, номер кнопки для модификации (pos). В синглтон-класс .m я поставил практически тот же код:
- (void)activateAnswerAtPos:(int)pos {
// retrieve, modify and update clueAnsState
NSMutableArray *newCAS = [[GameData gameData].curData objectForKey:@"clueAnsState"];
[newCAS replaceObjectAtIndex:pos
withObject:@"2"];
[[GameData gameData].curData setObject:newCAS
forKey:@"clueAnsState"];
NSLog(@"%@", newCAS);
for (NSInteger idx = 0; idx < 8; idx++) {
NSString *temp = [newCAS objectAtIndex:idx];
if ([temp isEqualToString:@"1"]) {
UIButton *b = [[AnswerButtons answerButtons].buttons objectAtIndex:idx];
[[b layer] setBorderWidth:0.0f];
}
if ([temp isEqualToString:@"2"]) {
UIButton *b = [[AnswerButtons answerButtons].buttons objectAtIndex:idx];
[[b layer] setBorderWidth:2.0f];
}
}
}
Итак, я изменил первый фрагмент кода, чтобы сделать его вызовом нового метода:
- (IBAction)button1WasTouched:(id)sender {
NSLog(@"Hello from button 1");
[sender activateAnswerAtPos:0];
}
К сожалению, я что-то не так делаю, поскольку получаю следующее исключение:
2012-03-30 19:41:40.199 P3[6751:f803] Hello from button 1
2012-03-30 19:41:40.201 P3[6751:f803] -[UIRoundedRectButton activateAnswerAtPos:]: unrecognized selector sent to instance 0x6e709f0
Я не уверен, что здесь происходит; несколько альтернатив тоже не работают, и я думаю, что устранение неполадок направляет меня в неправильном направлении. Что не так с тем, как я называю этот метод? Очевидно, я даже не запускаю метод. ТИА.