2016-08-13 282 views
2

我在ViewController中有一個段控件和一個容器。在容器中是一個PageViewController。如果你點擊從段控制值「活動」表「用戶」的被改變的項目之一(源碼) 表「用戶」:從另一個視圖控制器通知視圖控制器

username text, active bool 
user1, false 
user2,true 

所以,如果你點擊了USER1段控制表將變爲

username text, active bool 
    user1, true 
    user2,false 

是否有在PageViewController所有ViewControllers識別數據庫中的變化和新的用戶重新加載其數據的方式。如果這不可能,那麼最好的辦法是怎麼做?

請視

回答

6

如果我理解正確的,你想,當你在另一個視圖控制器改變分段控制值的通知一些視圖控制器。

在這種情況下,您可以使用NSNotificationCenter

NsNotificationCenter向其觀察員發送通知。當觀察者收到通知時,你可以讓它做些什麼。

例子:

NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil) 

NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(aMethod(_:)), name:"NotificationIdentifier", object: nil) 

func aMethod(notification: NSNotification){ 
    // Do stuff here 
} 
+0

嘿謝謝多數民衆贊成在工作!但我得到了一個錯誤。我在PageViewControler的其中一個視圖上放置了一個標籤。所以當我點擊SegmentControl時,函數「aMethod」在viewcontroller中調用,但當我想更改viewcontroler中的標籤文本時,出現錯誤「致命錯誤:意外地發現零,同時展開可選值」。爲什麼標籤=零?我改變了viewDidLoad()函數中標籤的文本沒有問題。 – ReasyEasyPeasy

+0

它必須是因爲該視圖控制器尚未分配到內存中。我的意思是它的viewDidLoad沒有被調用,或者之後它在內存中被釋放。只要他們的視圖控制器還活着,IBOulets就活着。 –

+0

好的。因此,當我在「aMethod」中調用self.viewDidLoad()並在viewDidLoad()中調用函數「reloadLabel」時,標籤仍然爲零。在ViewController中重新加載數據的正確方式如何? – ReasyEasyPeasy

相關問題