2016-08-13 155 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

相关问题