设置代表

时间:2013-03-21 18:02:22

标签: ios objective-c

我相信这是非常基本的,但我还没有找到任何关于它的信息。

我有一个viewController女巫有一个带有一堆表单viewControllers的navigationController的模态segue。像这样:

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

在viewController C中,我创建了一个委托,如下所示:

@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;

但代表似乎没有设置。想法?

1 个答案:

答案 0 :(得分:0)

当您执行instantiateViewController时,您正在创建 NEW ViewControllerA。如果您想要现有的ViewControllerA,则需要将其传递给控制器​​链。如果这成为问题,您可以在app委托上创建一个属性来存储它。从哲学上讲,有些人可能会反对将app委托用作全局变量清算所,但它可能比将指针向下传递到4级视图控制器更清晰。在这种情况下,您确定需要委托模式吗?也许NSNotificationCenter会更清洁?