如何获取以前从uibutton分配图像和标题的标签值?

时间:2014-04-04 06:05:55

标签: ios iphone objective-c uibutton

我有一个UIView,其中

我的.h头文件

UIButton *btn;

和我的.m实现文件

    btn = [UIButton buttonWithType:UIButtonTypeCustom];
            CGRect frame = CGRectMake(5,5,circleImage.frame.size.width-10,circleImage.frame.size.height-10);
            [btn setFrame: frame];
    [btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.png",[GrideImgArray objectAtIndex:count]]] forState:UIControlStateNormal];

        btn.imageView.contentMode = UIViewContentModeCenter;
        [btn setTag:btnTagValue];
 [btn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
        [circleImage addSubview:btn];

在我的按钮点击方法

-(void)buttonClicked:(UIButton *)sender{
     //do something
}

现在我的问题是我还有一个uibutton和tha方法是moreOptionClicked

-(void)MoreOptionOnClick:(UIButton *)sender{
UIButton *button = (UIButton *)[self viewWithTag:sender.tag];//same tag as (btn.tag=sender.tag)
NSLog(@"%@",button.titleLabel.text);
NSLog(@"%@",button.imageView.image);
}

在这个方法中,我想先前分配按钮whic是(btn)标题和图像,但在moreOptionClick中这两个NSLog方法返回null

IMP: - btn标签等于sender.tag显示我对两个uibutton都有相同的标签

任何答案都将不胜感激

2 个答案:

答案 0 :(得分:0)

您可以使用此[self.view viewWithTag:1];获取UIButton。 但是您有两个具有相同标记的视图。 您可以将具有不同符号的相同标记设置为两个不同的UIButton。 说标签100到btn1和-100到btn2。 并且在您的方法中,您可以根据按钮标记的符号获得另一个按钮。

[fristbtn setTag:100];
[secondbtn setTag:-100];

并在您的方法中。

-(IBAction)MoreOptionOnClick:(UIButton *)sender{
//suppose sender is secondbtn.
int iSuperTag=0-sender.tag;//you will get 100.
 UIButton *button = (UIButton *)[self viewWithTag:iSuperTag];
 NSLog(@"%@",button.titleLabel.text);
 NSLog(@"%@",button.imageView.image);
}

答案 1 :(得分:0)

@Visnu我尝试了同样如下,它工作正常我在你的代码中看到的唯一区别是我没有为按钮设置任何标题或图像,我做了。

- (void)viewDidLoad {
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
    UIButton *btnA = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnA setBackgroundColor:[UIColor blueColor]];
    [btnA setTitle:@"A" forState:UIControlStateNormal];
    CGRect frameA = CGRectMake(5,5,100,30);
    [btnA setFrame: frameA];
    [btnA setTag:1];
    [btnA addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnA];

    UIButton *btnB = [UIButton buttonWithType:UIButtonTypeCustom];
    [btnB setBackgroundColor:[UIColor blueColor]];
    CGRect frameB = CGRectMake(50,50,100,30);
    [btnB setTitle:@"B" forState:UIControlStateNormal];
    [btnB setFrame: frameB];
    [btnB setTag:2];
    [btnB addTarget:self action:@selector(btnMoreOptionOnClick:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btnB];
}


- (IBAction)buttonClicked:(UIButton *)sender{

}

-(IBAction)btnMoreOptionOnClick:(UIButton *)sender{
    UIButton *button = (UIButton *)[self.view viewWithTag:1];
    NSLog(@"%@", button.titleLabel.text);
}

试试这段代码就可以了。