我有一个名为buttons的数组,它由UIButton对象组成。我填写如下:
for (int i=0; i<self.numButtons; i++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Title" forState:UIControlStateNormal];
button.frame = CGRectMake(xCoord-40, y, 80, 20);
[button setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
[button setTag:i];
[self.buttons addObject:button];
[self.view addSubview:button];
y+= 45;
}
这些按钮的操作是buttonAction。此操作应该更改所选按钮的颜色。以下是我实施的方法:
-(void) buttonAction:(id)sender{
int num = (int)[sender tag];
[[self.buttons objectAtIndex:num] setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
NSLog(@"%@", [self.buttons objectAtIndex:buttonClicked].titleLabel.text);
}
结果是没有颜色变化。即使我尝试NSLog按钮的标题它返回(null)。所以我的问题是如何解决这个问题,以及如何在数组内的对象上调用方法?任何帮助,将不胜感激。谢谢!
答案 0 :(得分:4)
所有证据都指向self.buttons
为nil
。你有没有初始化它?
某处你需要一条像:
self.buttons = [NSMutableArray array];
当然,您可以将sender
参数用于buttonAction:
方法:
- (void)buttonAction:(UIButton *)button {
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
}
注意参数的变化。
答案 1 :(得分:0)
我喜欢这样做。不要忘记使用IBAction。如果您决定使用笔尖或故事板,这将有所帮助。
-(IBAction) buttonAction:(id)sender{
[((UIButton*)sender) setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]
NSLog(@"%@", ((UIButton*)sender).titleLabel.text)
}