0

我相信这是非常基本的,但我找不到任何关于它的东西。

我有一个 viewController 女巫有一个带有一堆表单视图控制器的导航控制器的模态 segue。像这样:

viewController A ---(modal segue)---> navigationController ---> viewController B ---> viewController C

在 viewController CI 中做了一个委托,如下所示:

@protocol ViewControllerCDelegate <NSObject>
- (void)myMehtod;
@end

@interface ViewControllerC : UIViewController

@property (nonatomic, assign) id <ViewControllerCDelegate> myDelegate;

(我已经合成了 myDelegate)

我想将 myDelegate 设置为 viewController A。我的问题是,我在哪里以及如何做到这一点?

我已经尝试在 viewController A 的 viewDidLoad 中这样做:

ViewControllerC *delegateController = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerC"];
delegateController.myDelegate = self;

但委托似乎没有得到设置。想法?

4

1 回答 1

0

当您实例化ViewController 时,您正在创建一个的ViewControllerA。如果您想要现有的 ViewControllerA,您需要将其传递到控制器链中。如果这变得有问题,您可以在应用程序委托上创建一个属性来存储它。从哲学上讲,有些人可能反对将应用程序委托用作全局变量票据交换所,但它可能比将指针向下传递到 4 级视图控制器更干净。您确定在这种情况下需要委托模式吗?也许 NSNotificationCenter 会是一个更干净的选择?

于 2013-03-21T18:15:34.990 回答