0

我知道如何在直接依赖的 ViewController 之间建立“正常”委托。因此,如果我说,我必须从一个视图向其上一个视图发送消息,我知道该怎么做。但是,如果两者之间有更多的 ViewController,我该如何设置委托呢?

所以我假设我根据计划进行了这个设置:

ViewController1 -> ViewController2 -> ViewController3(通过 ButtonPressed)(通过 ButtonPressed)

如果我想在 VC2 中的 VC1 中设置一个(例如)NSString,我只需写入 prepareForSegue,我在其中调用 VC2:

VC2.delegate = self;

但是,当我想在 VC3 和 VC1 之间传输数据而无需更改 VC2 时该怎么办?如果它不是“自我”,我该如何设置委托?我知道我的描述很糟糕,但我无法更好地描述它。

我只想要这个:VC1 有一个按钮和一个标签;该按钮打开VC2,它也有一个按钮,但没有标签;这个 VC2Button 显示 VC3;通过触摸 VC3 中的按钮,我想更改 VC1 中的标签。但是不必设置一个代表到 VC2,然后另一个到 VC1,我知道这是如何工作的。

希望你能得到我想要的。

提前致谢!

4

2 回答 2

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];
于 2013-10-24T16:30:48.930 回答
0

NSNotificationCenter如果您不想维护太多指针只是为了将两个不相关的视图链接在一起,可能会有所帮助。

于 2013-10-25T10:41:52.777 回答