2009-11-29 37 views
1

我遇到了一個活着正在吃東西的問題。我真的很希望我在這裏錯過了一些小東西。這似乎是一個相當「n00b」的問題。在XCode中更改NSImage - 這行代碼不起作用

我有一個空白的NSImageView,我想按下按鈕時顯示圖片 - 這很簡單。

這裏是我的編碼

NSBundle *mb = [NSBundle mainBundle]; 
NSString *fp = [mb pathForResource:@"tiles" ofType:@"PNG"]; 
NSImage *image = [[NSImage alloc] initWithContentsOfFile:fp]; 
if ([image isValid]) { 
    [selection setImage:image]; 
    [selection setImageScaling:NSScaleProportionally]; 
} 

而行,

tiles.PNG是我包的資源

如果[image isValid]是滿意的,因爲我已經插入僞碼到條並有該工作

selection在我的頭文件中定義如下

IBOutlet NSImageView *selection; 

它也鏈接到IB中的應用程序委託。

我有一種感覺,我可能沒有正確地鏈接它?

爲什麼圖像不顯示?如果任何人都可以看到一個錯誤 - 或者我提供的工作代碼 - 我會很感謝soooooo

布賴恩

+2

你能提供一個你在IB連接的屏幕截圖嗎? – ennuikiller 2009-11-29 19:29:55

+0

BTW:'-initWithContentsOfFile:'在失敗時返回'nil',而不是無效的圖像。你應該檢查'if(image){}'而不是'if([image isValid]){}'。 – 2009-11-29 19:55:32

+0

如果(圖像)也滿足,那麼圖像文件路徑是正確的。我認爲這是一個鏈接問題。我會盡快提供一個截圖。出於某種原因,PREVIEW不爲我工作。沒有屏幕捕獲正在節省,並且我在Finder中打開的每個.jpg或.png都顯示一個白色屏幕...試圖弄清楚爲什麼...並且很難重新啓動... – Brian 2009-11-29 20:17:07

回答

-1

你記得送-setNeedsDisplay到NSImageView您設置圖像後?

+0

不,這是否有必要?我在[選擇setNeedsDisplay:YES]中添加了,但仍然沒有收到 – Brian 2009-11-30 05:01:04

+0

不,這不是必需的。 – benzado 2009-12-11 20:45:30

1

這不是一個鏈接問題 - 如果您未能鏈接到Cocoa或AppKit,您的應用程序甚至不會啓動(假設它甚至鏈接成功)。

更可能的是,或者您沒有將插座連接到筆尖的圖像視圖,或者尚未加載筆尖。檢查的方法是使用%p格式化程序對imageView指針的值NSLog

+0

IB中是否應該有多個鏈接?我去了IB的appDelegate圖標,看到我在我的.h文件中定義的「選擇」插座,並將它拖到NSImage。現在它顯示鏈接。這裏是否需要更多鏈接?我知道這個動作是聯繫起來的,因爲它除了改變圖像之外還有其他一些東西......所有這些都可以工作。 我希望我可以拍攝屏幕截圖,但我的蘋果「預覽」應用程序已損壞。 – Brian 2009-11-30 05:30:20

+0

NSImage不是NSImageView。如果您的預覽應用程序已損壞,則可能不是您的Mac OS X安裝中唯一損壞的部分。我的結論是,你將來會重新安裝。 – 2009-11-30 06:53:53

1

我有一個類似的問題,我的視圖沒有顯示,結果是視圖被隱藏了。這是Interface Builder中視圖屬性中的一個設置。只是一個平底船,但給它一個去。

1

您需要使用調試器並查看運行時發生了什麼。 fp是否?圖像無?選擇零?調試器是你的朋友。