2012-06-07 9 views
0

У меня есть контроллер контейнера, который говорит ContainerViewController и другой UIViewController (PhotoViewcController), который я добавляю в качестве контроллера childview в ContainerViewController. Таким образом, сообщение отправляется из ContainerViewController в PhotoViewcController. Но как я могу использовать двухстороннее отношение в родительских контроллерах представлений? так что сообщение передается формацией PhotoViewcController в ContainerViewController.Двустороннее отношение для UIViewController

ответ

3

делают недвижимость в дочернем классе, как этот

@property (assign) id pDelegate; 

и синтезировать его, и когда вы идете, чтобы увидеть ребенка контроллера, установить делегат как себя перед нажатием/присутствующее в

childController.pDelegate = self; 

прямо сейчас если вы хотите отправить сообщение, сделайте это

if([self.pDelegate respndsToSelector:@selector(popedBackFromChild:)]) 
{ 
[self.pDelegate popedBackFromChild:<some object>]; 
} 

скажите мне, если вам нужно дополнительное объяснение

+0

Если в моем контейнереViewController я добавляю UIScrollView в качестве подзаголовка, я хочу добавить представление контроллера детского представления в качестве подзапроса для scrollview, нужно ли добавить строку [self addChildViewController: childViewcontroller]? В этом случае родителем childViewController будет ContainerViewController? –

+0

То же самое, когда вы инициализируете дочерний объект, задаете его делегатом родительскому, предпочтительный способ - сделать инициализатор и установить делегат там как параметр – Saad

+0

@TheSaad Спасибо за * if ([self.pDelegate respndsToSelector: @selector (popedBackFromChild :)) ]) * не знал этого. –

1

Существует два способа сделать это. Либо укажите для него протокол в дочернем классе и определите его в родительском классе, либо вы можете опубликовать и отправить уведомление и передать необходимую информацию в качестве словаря. Как сказал Саад, это лучший способ определить протокол, но уведомления легче управлять. P.S. Родительский класс - это класс, в котором вы будете обновлять информацию, и класс Child будет предоставлять его.

Смежные вопросы