有没有更好的办法?代表 - >代表 - >代表

Cri*_*ter 7 delegates objective-c uiview uinavigationcontroller

我有一个加载视图的视图,需要将视图推送到主导航控制器.

我为每个视图设置了一个委托,基本上让我的呼叫备份到主导航控制器的"链".

它有效,但我很好奇是否有更好(更容易?)的方法来实现这一目标?

Fre*_*eer 7

您可以使用NSNotificationCenter发送NavigationController将响应的消息.

在您需要调用NavigationController的视图中,您可以编写如下内容:

[[NSNotificationCenter defaultCenter] postNotificationName:@"DoWork" object:nil];
Run Code Online (Sandbox Code Playgroud)

@"DoWork"另一个对象将响应的唯一(最可能)消息名称在哪里.

在您的NavigationController中,您需要添加一个观察者才能捕获该通知,如下所示:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doWork) name:@"DoWork" object:nil];
Run Code Online (Sandbox Code Playgroud)

@selector(doWork)发布通知时要在哪里执行选择器,并且@"DoWork"是您要响应的通知.


Ste*_*ani -1

根据您设置程序的方式,如果您的 App Delegate 包含 UINavigationController您可以从任何地方访问导航控制器:

[[[NSApp delegate] navigationController] pushViewController: myVC animated:YES];
Run Code Online (Sandbox Code Playgroud)

但同样,只有当您的应用程序委托包含UINavigationController.