1

私がするときはいつでも:

xxx = [NSImage imageNamed:@"Package.png"];

xxxは読み込まれますが、幅と高さは 0 のままです。NSImageCell に読み込もうとすると、次のエラーが発生します。

NSImageCell のオブジェクト値は NSImage でなければなりません。

誰かが私を助けることができますか?私はこれまでこの問題を抱えたことはありません。

編集:申し訳ありませんが、私はこのビットを見逃していました. そのため、データ ソース デリゲートで実行すると機能せず、' return cell; ' の後に上記のエラーが表示されます。'。

NSImageCell* cell = [[NSImageCell alloc] init];
[cell setObjectValue:xxx]; // Using imageNamed doesn't help either

編集2:これは悪化しています。何が起こったのかわかりませんが、画像は高さと幅を適切にロードしますが、NSImageCell に追加するとまだ文句を言います。

代替テキスト

4

3 に答える 3

6

なるほど、テーブルビューの側面は結局のところ関連性があります。

データソースとしてのあなたの仕事は、列のセルのオブジェクト値を返す(そしてユーザー編集の場合は受け取る)ことです。

しかし、あなたはそのような値を返していません。あなたはセルを返しています。したがって、画像セル(データソースによって作成された)を画像セル(列が所有する既存のセル)の値として設定しようとしています。

ログメッセージは、列を作成したときに列のセルを画像セルとして設定済みであることを示しているため、ここで行う必要があるのは、セルではなく列のオブジェクト値を常に返すようにデータソースを変更することだけです。画像列の場合は、画像を返します。テキスト列の場合は、文字列を返します。

NSTableViewはUITableViewのようには機能しないことに注意してください。UITableViewCellsはUIViewであり、画面上の行と同じ数のセルがあります。NSTableViewでは、各NSTableColumnは1つだけのデータセルを取得し、その1つのセルを使用してすべての行のその列を描画します。セルは、セルに提供するオブジェクト値を描画します。これは、データソースメソッドからオブジェクト値(オブジェクト値)を返すことによって行います。

コントロール(NSTableViewはNSControlの一種)とそのセルに関するドキュメントは、コントロールおよびセルプログラミングガイドです。

于 2010-08-19T06:38:49.137 に答える
1

私の推測では、それnilはを返します。その場合、幅/高さを取得すると0が返されます。

試す:

xxx = [NSImage imageNamed:@"Package"]; // the extension is not needed on the desktop or iOS 4

画像が実際にアプリケーションのリソースフォルダにコピーされていることを確認してください。

于 2010-08-18T22:13:04.063 に答える
0

nil実際、幅と高さがゼロの NSImage インスタンス ( ではない) を受け取っていることを確認したら、次のステップは、それがなぜ起こるのかを判断することです。

  1. プレビューで Package.png を開くことはできますか?
    1. もしそうなら: プレビューの情報ウィンドウでの幅と高さは? 解像度 (DPI またはピクセル/メートル) 情報はありますか? もしそうなら、それは何と言っていますか?
    2. アプリケーション バンドルを開いた場合、その Package.png のコピーをプレビューで開くことができますか?
  2. 画像の説明をログに記録すると、どのような出力が得られるでしょうか?
  3. 画像のrepresentations配列をログに記録した結果は何ですか? (これは画像自体の説明に含める必要がありますが、そうでない場合に備えて明示的に含めます。)
  4. ビルド フォルダーを削除して再ビルドするとどうなりますか?
于 2010-08-19T04:51:01.970 に答える