1

我有 2 个带有 segue “page curl”的视图控制器

viewcontrollerA => pagecurl => viewcontrollerB 现在我想更新 viewcontrollerA,因为用户在 viewcontrollerB 上做了一些更改。

我试过了:

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

它仅适用于我放入这些函数的 NSLog。但它们都不适用于检查Coredata并更新界面的功能。请帮忙

4

4 回答 4

2

试试这个代码:

你添加父类

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

调用子类

[[NSNotificationCenter defaultCenter]postNotificationName:@"subMitReport" object:nil]
于 2013-06-26T11:11:27.057 回答
0

In a one-to-one relation, you should prefer the delegation pattern. Just add a weak reference of viewcontrollerA to your viewcontrollerB. You can just call a method (in this case viewDidLoad method) of viewcontrollerA using the reference so you can refresh the views. But I'd prefer declaring a protocol for delegation to prevent tight coupling of two view controllers.

于 2013-06-26T11:20:58.073 回答
0

ViewWillApear 或 ViewDidApear 将被调用,因为 viewcontroller 中有任何对象更改,但是如果您想从另一个 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];

turnButtonCountinesOff 是您在父视图控制器中的功能

在你的孩子 viewcontroller 放这个:

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

希望能帮助到你。

于 2013-06-26T19:07:45.883 回答
0

您可以发送父级将收到的 NSNotification,或者您可以使用父级视图实现的方法设置委托。

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

于 2013-06-26T11:04:03.317 回答