2017-08-15 26 views
0

我們使用prepareForSegue()方法將FirstViewController的數據發送到SecondViewController。 但是,這是override方法。這意味着FirstViewController類從UIViewController類繼承此方法。prepareForSegue()方法

該方法在UIViewController類中的任務是什麼?

爲什麼我們不要在override版本中調用super.prepareForResult()方法呢?

+4

[此方法的默認實現不執行任何操作(https://developer.apple.com/documentation/uikit/uiviewcontroller/16 21490-prepareforsegue)。 –

回答

1

從Apple文檔

此方法的默認實現不執行任何操作。

這樣就意味着超類實現什麼都不做,也不需要覆蓋諸如

super.prepareForReuse() 

方法其實這有點像模板方法模式。 「不要打電話給我們,我們會給你打電話」。 UIViewController類在需要時調用此方法,並且子類覆蓋它並添加實現。

+0

謝謝你的解釋:) – Goktug

-2

我曾經使用prepareForSegue,但後來我意識到這太麻煩了。而不是僅僅創建您的變量,你想直接在上面發送下方,你導入,像這樣/:

import UIKit 

var myVariable = "Hello" 

class ViewController: UIViewController{... 

那麼變量將訪問任何視圖控制器,而無需使用SEGUE。

因此,例如,在一個按鈕動作(在同一視圖控制器讓我們說),我可能會說:

myVariable = "Goodbye" 

然後我可以進入我的其他視圖控制器,並在viewDidLoad中或任何你想要訪問變量,您可以編輯變量或做任何,例如:

viewDidLoad{ 
print(myVariable) 
// Goodbye 
} 
+2

這是可怕的建議。你不應該通過全局變量傳遞數據。 – idz

+0

@idz除了它是一個可行的解決方案。所以我不會稱它爲可怕的建議謝謝 –

+0

這個問題的主要問題是你向所有人展示你的變量。所以,每個人都可以訪問並更改它。如果你設置了很多全局變量,調試它將會很糟糕,因爲有很多情況下,有人可以改變一些全局變量而沒人知道它。 – iamirzhan

相關問題