Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 向NSObject添加图像-可能吗?_Ios_Objective C_Nsobject - Fatal编程技术网

Ios 向NSObject添加图像-可能吗?

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

稍后,我将从包含文件名的.csv(逗号分隔文件)读取对象。这就是为什么我要这样做

我想完成的是让按钮从csv中的文件名获取图像

到目前为止,我所尝试的: 对象:

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