如何从iPhone SDK上的UIButton获取图像名称?
问题描述:
我想从自定义按钮中获取背景图像的名称。如何从iPhone SDK上的UIButton获取图像名称?
我把这种方法,当我点击过的UIButton:
-(void)getButtonImageName:(id)sender{
UIButton *resultButton = (UIButton *)sender;
NSLog(@" The button's image is %@.", resultButton.currentImage);
}
我能拿到冠军,并从按钮的其他属性,但不是背景图像名称。
任何人都知道该怎么做?谢谢!
答
没有办法将UIImage变成与[UIImage imageNamed:]一起使用的名称。
你滥用图片以存储数据吗?
你试图用图像的名称来完成什么?
编辑:
我有几个按钮,我想要得到的图像名字,当我按下一个按钮,切换到其他视图控制器和加载图像的名称。
无需执行此操作,只需传递UIImage实例即可。
如果你想显示基于名称的不同图像,就像你有一个缩略图,并且想要在另一个视图控制器中显示大版本一样,你必须从数据模型中获取图像名称并将其传递给视图控制器。
你如何决定哪个按钮获取哪个图像?
答
@fluchtpunkt正如你所说,我有一些缩略图是带有背景图像的UIbuttons。会发生什么是我创建如下在前面的视图控制器中选择的类别。事情是这样的......
if([strSection isEqualToString:@"animals"]){
[button_thumbnail_1 setBackgroundImage:[UIImage imageNamed:@"image1.png"] forState:(UIControlState)normal];
[button_thumbnail_2 setBackgroundImage:[UIImage imageNamed:@"image2.png"] forState:(UIControlState)normal];
}
if([strSection isEqualToString:@"cars"]){
[button_thumbnail_1 setBackgroundImage:[UIImage imageNamed:@"image1.png"] forState:(UIControlState)normal];
[button_thumbnail_2 setBackgroundImage:[UIImage imageNamed:@"image2.png"] forState:(UIControlState)normal];
}
}
感谢响应
答
你可以继承的UIButton:
//.h
@interface MySpecialButton : UIButton {
int mySpecialAttribute;
}
@property (nonatomic) int mySpecialAttribute;
- (void) setBackgroundImage;
- (UIImage*) getImage;
@end
,并使用您的特殊属性都设置并返回映像名称:
//.m
@implementation LetterButton
@synthesize mySpecialAttribute;
- (void) setBackgroundImage {
[self setBackgroundImage:[self getImage] forState:UIControlStateNormal];
[self setBackgroundImage:[self getImage] forState:UIControlStateDisabled];
}
- (UIImage*) getImage {
NSString *fileName = [NSString stringWithFormat:
@"My_special_image_%i.png", mySpecialAttribute];
return [UIImage imageNamed:fileName];
}
@end
在xib中设置按钮的类别:
答
这是为了得到一个自定义按钮
-(void)yesButtonButtonCliked:(id)sender
{
UIButton *tmpYes = (UIButton *)sender;
[self ClearAllButtons:tmpYes.tag:@"YES"];
UIImage* selectedImg=[UIImage imageNamed:@"checkboxtick.png"];
if (tmpYes.currentImage == selectedImg)
{
}
else
{
[tmpYes setImage:[UIImage imageNamed:@"checkboxtick.png"] forState:UIControlStateNormal];
}
NSLog(@"Button tag is %d",tmpYes.tag);
}
答
对马蒂亚斯的回答继当前图像最简单的做法“没有必要做这个,只是通过UIImage的实例,”这是解决方案对我来说,与同胞newbs具体代码:
Calling .m:
-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//Create an instance of the destination controller
dmImageZoom *dmz = (dmImageZoom *)[segue destinationViewController];
//Get the tapped button (the image was in a button) into a button object
UIButton *btnImg= sender;
//Get the button's image object
UIImage *img=btnImg.currentImage;
//Pass the image object to the destination controller's instance variable
dmz.imgPassed=img;
Called .h:
@interface dmImageZoom : UIViewController {
//Instance variable
UIImage *imgPassed;
}
//Property for the object that presents the image
@property (strong, nonatomic) IBOutlet UIImageView *imgView;
//Property that enables it to be assigned a value
@property (strong, nonatomic) IBOutlet UIImage *imgPassed;
Called .m:
- (void)viewDidLoad
{
...
imgView.contentMode = UIViewContentModeScaleAspectFit;
//Assign the image to view object
imgView.image=imgPassed;
答
UIButton *senderButton = (UIButton*)sender;
if ([senderButton.currentTitle isEqualToString:@"Hello"]) {
[senderButton setTitle:@"H" forState:UIControlStateNormal];
}
else {
[senderButton setTitle:@"Hello" forState:UIControlStateNormal];
forState:UIControlStateNormal];
}
我有几个按钮,我想,当我得到的图像名称按一个按钮,切换到另一个视图控制器并加载该图像的名称。 – karse23 2011-02-14 09:26:34