我知道如何在ViewController之间建立一个直接相关的“正常”委托。所以,如果我说,我必须从一个视图向其上一个视图发送消息,我知道如何做到这一点。 但是,如果两者之间有更多的ViewControllers,我该如何设置委托?
所以我想说我根据这个方案进行了这个设置:
ViewController1 - > ViewController2 - > ViewController3 (通过ButtonPressed)(通过ButtonPressed)
如果我想从VC2在VC1中设置(例如)NSString,我只需写入prepareForSegue,在那里我调用VC2:
VC2.delegate = self;
但是,如果我想在VC3和VC1之间传输数据而不必更改VC2,我该怎么办? 如果不是“自我”,我该如何设置代理? 我知道我的描述非常糟糕,但我无法更好地描述它。
我只想要这个:VC1有一个按钮和一个标签;按钮打开VC2,它也有一个按钮,但没有标签;这个VC2Button显示VC3;通过触摸VC3中的按钮,我想更改VC1中的标签。但是,无需将代理设置为VC2,然后将其设置为VC1,我知道这是如何工作的。
希望你得到我想要的东西。
提前致谢!
答案 0 :(得分:0)
您可以将代理从VC2传递到VC3,如下所示:
Inside VC1:
VC2 *vc2 = [VC2 alloc] init];
vc2.delegate = self;
Inside VC2:
VC3 *vc3 = [VC3 alloc] init];
vc3.delegate = self.delegate;
或者您可以使用目标选择器设计模式来实现此目的。
目标选择方式:
Inside VC1:
VC2 *vc2 = [VC2 alloc] initWithTarget:(id)iTarget andSelector:(SEL)iSelector];
Inside VC2: Pass on the target/selector received from VC1
VC3 *vc3 = [VC3 alloc] initWithTarget:(id)iTarget andSelector:(SEL)iSelector];
答案 1 :(得分:0)
NSNotificationCenter可能会有所帮助,如果您不想保留太多指针只是为了将两个不相关的视图链接在一起。