2015-04-01 84 views
0

我這麼堅持,現在,我已經試過這接縫合乎邏輯的我,使這項工作,但有沒有運氣一切......我該如何調用這個函數?

我在一個單獨的文件迅速得到這個:

進口基金會 進口UIKit

class MyViewController: UIViewController { 

    func background() { 
     var imageView : UIImageView 
     imageView = UIImageView(frame:CGRectMake(0, 0, 100, 300)); 
     imageView.image = UIImage(named:"bg.jpg") 
     self.view.addSubview(imageView) 
    } 
} 

我想調用它到一個單獨的視圖控制器文件。我這樣做的原因是因爲我可以在所有視圖控制器中調用背景類,而且我不必在每個視圖控制器中都執行相同的代碼。

我試圖調用它的方法是:

​​- 我得到錯誤Missing parameter for #1 in call

background() - 我得到錯誤Use of unresolved identifier 'background'

MyViewController() - 我不明白的錯誤,但沒有任何反應。

我真的很感激它,如果有人能告訴我如何將這個函數調用到視圖控制器中的ViewDidLoad部分。

謝謝。

回答

3

你在吠叫錯誤的樹。即使你可以在MyViewController中調用background方法,這仍然不會完成你要完成的任務,因爲當你在「單獨的視圖控制器文件」中調用background時,self中的background方法將是其他視圖控制器 - 所以你會把UIImageView放到其他的視圖控制器的視圖中,而不是這個視圖控制器的視圖。如果您希望能夠在每個視圖控制器中分別執行相同的操作,則需要在每個視圖控制器中內部使用background方法。

做到這一點的方法是通過擴展注入background到的UIViewController本身,從所有的視圖控制器繼承:

extension UIViewController { 
    func background() { 
     var imageView = UIImageView(frame:CGRectMake(0, 0, 100, 300)) 
     imageView.image = UIImage(named:"bg.jpg") 
     self.view.addSubview(imageView) 
    } 
} 

現在的應用程式內視圖控制器只能說self.background() (或簡稱background())來調用此方法。

相關問題