Ios 向NSObject添加图像-可能吗?
稍后,我将从包含文件名的.csv(逗号分隔文件)读取对象。这就是为什么我要这样做 我想完成的是让按钮从csv中的文件名获取图像 到目前为止,我所尝试的: 对象:Ios 向NSObject添加图像-可能吗?,ios,objective-c,nsobject,Ios,Objective C,Nsobject,稍后,我将从包含文件名的.csv(逗号分隔文件)读取对象。这就是为什么我要这样做 我想完成的是让按钮从csv中的文件名获取图像 到目前为止,我所尝试的: 对象: @interface question : NSObject { @private UIImage *imageName; } @property (nonatomic, retain)UIImage *imageName; (我试过使用NSString和UIImage,两者都没有达到我想要的效果) 视图控制器: - (void)vi
@interface question : NSObject
{
@private
UIImage *imageName;
}
@property (nonatomic, retain)UIImage *imageName;
(我试过使用NSString和UIImage,两者都没有达到我想要的效果)
视图控制器:
- (void)viewDidLoad
{
[super viewDidLoad];
question *question1 = [[question alloc]init];
[question1.imageName initWithContentsOfFile:@"Default.png"];//Will be read from a csv later on, just typing it in manually for a test
testImage = question1.imageName;
}
-(void)imageshow
{
//(UIImage *)testImage;(NSString *)imageNameString; Didnt work
//[self.testImage initWithContentsOfFile:@"%@",questiont.imageName]; - Doesnt work either
[testButton setImage:testImage forState:UIControlStateNormal];
}
-(IBAction)test:(id)sender
{
[self imageshow];
}
这个代码失败的地方是当我按下测试按钮时,什么也没有发生(不是崩溃)
我怎样才能正确地做到这一点?
(将带有文本文件名的图像添加到NSObject,然后在按钮/图像视图中显示)
是的,您可以尝试以下动态图像
question1.img = [UIImage imageNamed:[NSString stringWithFormat:"%@",imgName]];
imgName=>是图像的名称,而不是图像
示例:“abc.png”或“123.png”等如果属性名为
imageName
,则访问器变量自动命名为\u imageName
您在代码中使用了两个不同的变量
@interface question : NSObject
{
@private
UIImage *_imageName;
}
@property (nonatomic, retain)UIImage *imageName;
imageName不是包含图像的属性的好名称。。它最好适合字符串。有些东西需要改变 仅仅出于常规原因,所有类名的开头都要大写。它简化了阅读,在论坛上交流,避免了错误。 第二个名称变量可以说是抽象的,也可以说是抽象的。但不要选择一个误用的名字,比如imageName。该变量中应该有名称,而不是图像,或者可能是显示名称的图形。:)
imageWithContentsOfFile
需要一个完全限定的文件名。如果“Default.png
”是边界的一部分,正如我根据其名称猜测的那样,那么imageNamed:@“Default.png”
就可以了
您的setImage
看起来几乎不错。当图像为(空)
时,它当然无法工作。然而,在这一点上,直接访问iVar并不是好的商业实践。你应该使用它的setter/getter。改用:
[self.testButton setImage:self.testImage forState:UIControlStateNormal];
对你来说,这没什么区别。但与其他约定类似,当您将代码与在web上找到的代码或在团队中工作时,它有助于避免错误 您的@“Default.png”存储在哪里?@GuoLuchuan在supporting files文件夹中,它只是默认的黑色背景图像。请尝试以下操作:question1.img=[UIImage ImageName:@“Default.png”];[testButton setImage:question1.img for状态:UIControlStateNormal]@尤纳斯工作了,太好了,谢谢!我可以在名为:@“”的图像中使用变量(
%@
)使其使用不同的名称吗?你想把这个作为一个答案提交,这样你就可以从接受中得到一些业力吗?@OscarApeland,刚刚更新为一个答案:)太棒了,正是我想要的。非常感谢。是的,它原本是为一根弦而设计的,但我只是随便玩玩,并没有费心为每一件东西都起一个花哨的名字。
[self.testButton setImage:self.testImage forState:UIControlStateNormal];