我有一个动态创建按钮的循环。
for (int b = 0; b < _currentPlayerTeams.count; b++)
{
HNTeamObject *team = _currentPlayerTeams[b];
CGFloat buttonY = 168 + ((b + 1) * distanceBetweenButtons) - 23;
NSString *buttonTitle = [NSString stringWithFormat:@"%@ %@",team.teamName, team.seriesName];
UIButton *button = [[UIButton alloc] init];
button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setBackgroundImage:[UIImage imageNamed:@"images.png"] forState:UIControlStateNormal];
button.titleLabel.textColor = [UIColor blackColor];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
[button addTarget:self
action:@selector(chooseTeamOne:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle: buttonTitle forState:UIControlStateNormal];
button.titleLabel.text = (@"%@", buttonTitle);
button.frame = CGRectMake(labelAndButtonX, buttonY, 268.0, 46.0);
[self.view addSubview:button];
}
我需要创建一个函数,它可以作为创建的每个按钮的选择器,并查看按钮的标题。由于我在循环中制作按钮,因此它们是本地的,不会出现在我创建的另一个函数中。任何帮助,将不胜感激。我提前道歉,因为我对编码非常陌生,并且我不太了解正在发生的事情。感谢。
答案 0 :(得分:1)
按下按钮时,每个按钮都会调用chooseTeamOne:
功能,所以我假设您希望在该方法中获得按钮标题。
为此,请使用UIButton的标题属性:
NSLog(@"%@", button.currentTitle);
这将记录按钮的当前标题。值得注意的是,我正在引用&#34; button&#34;这是调用chooseTeamOne
方法的UIButton的实例。我假设chooseTeamOne
将UIButton按钮作为参数。
如果您的方法需要&#39; id&#39;作为参数,您需要将发送的对象强制转换为UIButton,如下所示:
- (IBAction)chooseTeamOne:(id)sender {
UIButton *button = (UIButton *)sender;
NSString *buttonTitle = button.currentTitle;
}
答案 1 :(得分:0)
您是否需要单独的选择器才能返回标题?如果不是那么..
我认为你的chooseTeamOne
函数就是这样的:
-(IBAction)chooseTeamOne:(id)sender {
...do things...
}
在这种情况下,只需添加
-(IBAction)chooseTeamOne:(id)sender {
UIButton *button = sender;
NSString *stringThatYouWant = button.titleLabel.text; //get the text on the button
...do things...
}