1

後で、ファイル名を含む .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 に追加し、それをボタン/画像ビューに表示します)

4

3 に答える 3

1

変更することがいくつかあります。

単なる従来の理由で、すべてのクラス名を最初に大文字で記述します。読みやすく、SOとしてフォーラムで交換し、間違いを防ぎます。ミドルネーム変数は、話すか抽象的で、できれば話す。しかし、imageNameのような誤解を招くような名前を選択しないようにします。その変数には、画像や名前を表示するグラフィックではなく、名前が含まれている必要があります。:)

imageWithContentsOfFile完全修飾ファイル名が必要です。"Default.png名前から推測できるように、「があなたの境界の一部である場合は、imageNamed:@"Default.png"そうします。

あなたsetImageはほぼよさそうだ。もちろん、画像がである間は機能しません(null)。ただし、現時点でiVarに直接アクセスすることはビジネス慣行としては適切ではありません。あなたはそのセッター/ゲッターを使うべきです。代わりに使用してください:

[self.testButton setImage:self.testImage forState:UIControlStateNormal];

あなたの場合、それは大した違いにはなりません。ただし、他の規則と同様に、コードをWebで見つけたコードと混合したり、チームで作業したりするときに、エラーを回避するのに役立ちます。

于 2013-02-27T08:18:13.093 に答える
1

プロパティに名前が付けられている場合imageName、アクセサ変数には自動的に名前が付けられ_imageNameます。

コードで 2 つの異なる変数を使用しています。

@interface question : NSObject
{
   @private
   UIImage *_imageName;
}
@property (nonatomic, retain)UIImage *imageName;

imageName は、画像を含むプロパティの名前として適切ではありません。文字列に適しています。

于 2013-02-27T08:12:36.157 に答える
1
   question1.img = [UIImage imageNamed:@"Default.png"]; 
    [testButton setImage:question1.img forState:UIControlStateNormal];

はい、動的画像に対して次のことを試すことができます

   question1.img = [UIImage imageNamed:[NSString stringWithFormat:"%@",imgName]];

imgName => は、画像の例ではなく、画像の名前です: "abc.png" または "123.png" など

于 2013-02-27T08:04:13.297 に答える