创建一个能够检查按下按钮标题的功能

时间:2015-03-24 22:28:54

标签: ios xcode function uibutton

我有一个动态创建按钮的循环。

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];
    }

我需要创建一个函数,它可以作为创建的每个按钮的选择器,并查看按钮的标题。由于我在循环中制作按钮,因此它们是本地的,不会出现在我创建的另一个函数中。任何帮助,将不胜感激。我提前道歉,因为我对编码非常陌生,并且我不太了解正在发生的事情。感谢。

2 个答案:

答案 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...
}