2016-12-16 41 views
-1

我試圖通過將相關代碼塊分成不同的類來簡化我的生活。從外部類Swift更改UITextField.text

但我遇到了一個問題:從這些類更改ViewController屬性(如UITextField.text等)。

我已經嘗試創建協議,但這真的很亂,所以我想找到一種新的方法來做到這一點。

那麼,有沒有一種簡單的方法直接從外部類改變ViewController屬性?我使用Swift 3 btw。

感謝你們的幫助。

+0

您可以在注入文本的地方添加一個公共方法,比如「func update(name:String){...在這裏修改標籤文本}」,您不必訪問UILabel directy。 –

+0

你可以更具體嗎?我在斯威夫特不太好 –

回答

0

如果要更改標籤的對象是由控制器擁有或呈現的子對象,則需要使用委派才能與控制器通信。您在該對象中聲明瞭要更改控制器標籤的協議,並聲明名爲委託的協議類型的弱屬性。當控制器創建該對象時,您將該對象的委託屬性設置爲控制器本身(如果該對象是控制器的ownee,則聲明該屬性較弱,則不會創建保留循環)。在控制器中實現協議中聲明的方法,並在實現中可以更改標籤。 另一種情況是,控制器由您想要更改標籤的對象擁有或呈現,在這種情況下,您只需要一種公開方法即可。