2014-11-06 57 views
2

我是XCode和Swift的新手。嘗試在OS X應用程序中簡單地設置我的視圖中的圖像。圖像應該從網上加載,但我認爲這並不重要。Swift:如何更改NSImage圖像源?

我創建了一個新的可可應用程序,有一個可用的列表視圖。在列表行的XIB中,我放置了一個「Image View」元素,並且可以在每行中顯示靜態圖像。

現在我想在行加載時更改圖像URL。我將圖像中的行拖到我的控制器類中,該類將@IBOutlet添加到代碼中。

這是我的控制器類的代碼:

import Cocoa 

class ListRowViewController: NSViewController { 

    @IBOutlet weak var rowImage: NSImageView! 

    override var nibName: String? { 
     return "ListRowViewController" 
    } 

    override func loadView() { 
     super.loadView() 

     var url = NSURL(fileURLWithPath: "http://example.com/some-image.png") 

     var image = NSImage(byReferencingURL: url!) 

     self.rowImage.image(image) 
    } 

} 

現在非常 搞笑 令人沮喪的錯誤從最後一條語句消息(self.rowImage.image(image))是

不能轉換表達式的類型「NSImage中'鍵入'NSImage?'。

好的。這是什麼意思,我該如何解決它?這與某些選擇權有關嗎?我嘗試了?的和!的,但無法弄清楚XCode對我的期望。

回答

2

imageNSImageView屬性,你可以分配給它。

self.rowImage.image = image 

而且,您的網址有誤NSURL(fileURLWithPath:)用於本地文件。改爲使用NSURL(string:)

var url = NSURL(string: "http://example.com/some-image.png") 
+0

Thanks @rintaro,那真的是它。我有點尷尬。在我經歷的Objective-C教程中,有一個'.setImage'方法,現在它似乎已經不存在了。有意義的是,'.image'是屬性。猜猜它在XCode中提出的問題太多,沒有提供像「沒有這樣的方法:圖像」的提示。 :)而且你對NSURL再合適不過了。隨着這兩個變化,它的作品完美。再次感謝! – udondan 2014-11-07 03:08:30