将代表从第三位设置为第一位 viewController

Setting the delegate from third to first viewController

我有三个viewControllers。当我在第三个视图控制器上时,我想向第一个视图控制器发送消息。我正在使用 protocol 并尝试为此设置 delegate

viewControllerC.h

@protocol ViewControllerCDelegate

- (void)performAction;

@end

...
@property (nonatomic, strong) id<ViewControllerCDelegate> delegate;

viewControllerA.h

@interface ViewControllerA : UIViewController <ViewControllerCDelegate>

viewControllerA.m

...
- (void)performAction {
    NSLog(@"Action was performed");
}

所以唯一的问题是,我无法将 delegate 从第三个设置到第一个。如何将 viewControllerC's 委托设置为 viewControlerA

这里有一张图片来描述它:

您必须将 A 控制器传递给 B 控制器,以便在创建时将其设置为 C 的委托。有点乱。

在这种情况下,尽管使用通知模型可能更有意义,其中控制器 A 侦听操作已在 C 上完成的 NSNotification。