2016-01-30 62 views
3

我有兩個簡單的ViewController:第一個有一個IBOutlet鏈接到UIImageView和設置圖像alpha通道的函數。第二個控制器有一個按鈕,當它被觸發時,應該調用函數來設置alpha通道。Swift:從另一個視圖控制器調用函數使對象無

這裏我的代碼:

class FirstViewController: UIViewController { 

    @IBOutlet imageView: UIImageView! 

    func changeAlphaChannel() { 
     imageView.alpha = 0.5 
    } 
} 

class SecondViewController: UIViewController { 

    let firstController = FirstViewController() 

    @IBAction func buttonPressed(sender: UIButton) { 
     firstController.changeAlphaChannel() 
    } 
} 

調用changeAlphaChannel()內FirstViewController工作原理aspected,但如果我把它稱爲按下按鈕,imageView變成零和應用程序崩潰。 我該如何解決這個問題? 謝謝

回答

6

它的崩潰,因爲你的imageView是零。剛剛初始化firstControllerFirstViewController()不會。您將不得不從故事板加載該視圖控制器。你可以這樣來做

let storyboard: UIStoryboard = UIStoryboard.init(name: "StoryboardName", bundle: nil) 
let firstViewController: FirstViewController = storyboard.instantiateViewControllerWithIdentifier("StoryboardIdentifier") as! FirstViewController 

UPDATE

現在firstViewController的IBOutlets將在firstViewController的觀點被實例化,而你的情況是不會發生僅設定。你需要做的是首先顯示firstViewController的視圖,然後調用你的函數。

+0

感謝您的答覆, 我試過你的解決方案,但調用'firstViewController.changeAlphaChannel()'返回相同的錯誤: **致命錯誤:意外地發現零,而解包可選值** 和imageV iew仍然沒有 – johnnyparafango

+0

對不起,我會盡快編輯答案 –

0

您沒有在第一個控制器上調用該函數 - 您正在創建第一個控制器的新實例,該實例沒有在圖像中設置任何內容。

您需要將對第一個控制器的引用傳遞給第二個控制器。

0

在SWIFT,我們需要檢查經營者爲零或者沒有,試試這個

ImageView的?阿爾法= 0.5

,而不是

imageView.alpha = 0.5

相關問題