2013-06-26 71 views
1

的viewDidLoad中我有2个viewcontrollers与赛格瑞“页面卷曲”如何刷新父视图 - 控制

viewcontrollerA =>页面卷曲广告素材=> viewcontrollerB ,现在我想更新viewcontrollerA,因为用户在做一些viewcontrollerB变化。

我tryed:

UIStoryboard* sb = [UIStoryboard storyboardWithName:@"mystoryboard" 
              bundle:nil]; 
UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"ExampleViewController"]; 
[vc ViewDidLoad]; // or ViewWillAppear or ViewDidApear 

它只能对NSLog的我把这些功能。 但他们都没有检查Coredata和更新接口的功能。 请帮助

回答

0

ViewWillApear或ViewDidApear将被调用,因为在该视图 - 控制的任何对象的变化,但如果你想改变从另一个viewcontrollerB你viewcontrollerA,需要NSNotificationCenter从viewcontrollerA

,你可以随时使用NSNotificationCenter调用函数更新你的父视图 - 控制

在父视图控制器把这个:

//since child view controller calls turnItOff, notification center calls function "turnButtonCountinuesOff" 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(turnButtonCountinuesOff) name:@"turnItOff" object:nil]; 

turnButtonCountinuesOff是你在括号功能牛逼的ViewController

在你的孩子的ViewController把这个:

//connect to parent UI view controller calls notification turnItOff. 
[[NSNotificationCenter defaultCenter] postNotificationName:@"turnItOff" object:nil]; 

希望它帮助。

0

您可以发送父代会收到的NSNotification,也可以使用父视图实现的方法设置代理。

在这两种情况下,只需重新加载视图即可。

2

试试这个代码:

添加

[[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(actionremovecalender:) 
               name:@"subMitReport" 
               object:nil]; 
-(void)actionremovecalender:(NSNotification *)notification 
{ 
    [self ViewDidLoad] 
} 

父类调用子类

[[NSNotificationCenter defaultCenter]postNotificationName:@"subMitReport" object:nil] 
+0

:)谢谢你告诉 – vegligi

0

在一到一个关系,你应该更喜欢的委托模式。只需将viewcontrollerA的弱引用添加到viewcontrollerB。您可以使用引用调用viewcontrollerA的方法(在本例中为viewDidLoad方法),以便刷新视图。但我更愿意宣布委派协议以防止两个视图控制器的紧密耦合。