0

システム環境設定プロジェクトで NSImages を解決できないようです。

画像は、xcode プロジェクトのメイン フォルダーにある user.png です。

編集:ソース コードへのリンクを含めました。うまくいけば、誰かが問題を見つけることができます。

PersonController.m

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    Person *person = [personsList objectAtIndex:row];

    if (tableColumn == listGender) {
        if ([person.gender isEqualToString: @"m"]) {
            /****************************
             *  Method - 1: Doesn't work
             ****************************/
            NSImage *image = [NSImage imageNamed:@"user.png"];
            NSLog(@"image is valid? %@", [image isValid] ? @"yes" : @"no");
            return image;


//            return @"male";
        }
        else {
            /****************************
             *  Method - 1: Doesn't work
             ****************************/
            NSImage *image = [NSImage imageNamed:@"user_female.png"];
            NSLog(@"image is valid? %@", [image isValid] ? @"yes" : @"no");

            return image;
//            return @"female";
        }
    }
    else if (tableColumn == listName) {
        return [person valueForKey:@"name"];
    }
    else {
        return nil;
    }
}

また、このパスを指定しても機能しますが、パス全体を指定する必要があるのはなぜですか?

NSImage *myImage = [[NSImage alloc] initByReferencingFile:@"/Users/coderama/sandbox/Persons/user.png"];
4

4 に答える 4

2

イメージの正しい名前を使用してください。画像が「Smiley.png」の場合、「Smiley.png」を使用します。また、メソッドで拡張機能を使用する必要がありますimageNamed。試す:

NSImage *image = [NSImage imageNamed:@"smiley.png"];

ファイルが本当にすべて小文字であるかどうかを再確認してください。

于 2012-02-10T20:34:37.053 に答える
2

次の方法で、プロジェクト フォルダー内の画像ファイルにアクセスできます。

NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"smiley" ofType:@"png"];
NSImage *image = [[NSImage alloc] initWithContentsOfFile: imagePath];
NSImageCell *cell = [[NSImageCell alloc] init];
[cell setImage:image];
于 2012-02-10T09:03:59.003 に答える
1

smiley.pngファイルは Xcode プロジェクト ナビゲーターに表示されますか? そうでない場合、ビルドされたアプリケーションに追加されません。それを Finder からナビゲーターにドラッグし、[項目を宛先にコピー...] の選択を解除します。引っ張る

ナビゲーターにある場合は、ターゲット メンバーシップを確認します。ナビゲータでファイルをクリックし、ユーティリティ ペインを開きます。最初のタブでアプリケーションのチェックボックスがオンになっていることを確認します。対象会員

于 2012-02-10T20:40:06.967 に答える
0

コードを確認していませんが、次の手順をお勧めします。

ステップ 1: XIB で NSImageCell を listGender テーブル列にドラッグ アンド ドロップします。

ステップ 2:イン- tableView:objectValueForTableColumn:row:

tableColumn == listGender の場合は nil を返す

ステップ 3:このメソッドを実装します。

– tableView:willDisplayCell:forTableColumn:row:

tableColumn == listGenderの場合、セルに画像を設定します

お役に立てれば :)

于 2012-02-14T15:47:51.563 に答える