Возможно, вам придется пересмотреть свой дизайн. Если «нет прямой связи между B и C», то C не должен вызывать методы на B. Если C нуждается в вызове методов на B, тогда - это отношение ,
Тем не менее, поскольку ваш контроллер представления A знает об обоих этих объектах, он может действовать как связь между ними. Вы можете заставить C вызывать метод для A, который затем будет вызывать метод для B. Конечно, для этого требуется, чтобы C имел ссылку на A; поскольку вы говорите, что C отображается при нажатии кнопки в A, C имеет такую ссылку через свойство parentViewController
. Например:
// In C
- (IBAction) buttonPressed {
[self.parentViewController passMessageToB:self];
}
// In A
- (void) passMessageToB: (id)sender {
// sender is a reference to C, so B will be able to
// pass information back if needed
[B actOnMessageFromC:sender];
}
// In B
- (void) actOnMessageFromC: (id)sender {
// Do whatever is needed
}
Можно сделать это еще более сложным - вы даже можете передать конкретный селектор A, который он может вызвать на B, но в этот момент я думаю, что вам определенно потребуется пересмотреть свой дизайн и соединения между B и C.