我相信这是非常基本的,但我还没有找到任何关于它的信息。
我有一个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;
但代表似乎没有设置。想法?
答案 0 :(得分:0)
当您执行instantiateViewController时,您正在创建 NEW ViewControllerA。如果您想要现有的ViewControllerA,则需要将其传递给控制器链。如果这成为问题,您可以在app委托上创建一个属性来存储它。从哲学上讲,有些人可能会反对将app委托用作全局变量清算所,但它可能比将指针向下传递到4级视图控制器更清晰。在这种情况下,您确定需要委托模式吗?也许NSNotificationCenter会更清洁?