Вы могли бы рассмотреть возможность использования уведомлений или (еще проще) Key-Value наблюдающей.
Сегодня утром я дал кому-то совет о связи между контроллерами в контексте UINavigationController. Затем сегодня днем я попробовал KVO в первый раз, и мне пришлось вернуться и дать разные советы. KVO WAY проще, чем пытаться преследовать вещи в иерархии представлений. Вы просто объявляете, что наблюдает за чем, а затем устанавливают эту вещь, чтобы улавливать уведомления об изменениях. Кусок пирога!
EDIT:
Уведомление, вероятно, путь здесь, на самом деле - если бы вы оба объекта инстанцированного в одном месте вы можете зарегистрировать один в качестве наблюдателя на ключах других, но это не обязательно в случае, если вы создаете панель вкладок из шаблонов.
Итак, уведомления. Идея заключается в том, что вы регистрируете один контроллер представлений в качестве наблюдателя уведомлений, затем записываете уведомления с другого контроллера представления, а наблюдатель уведомляется при отправке уведомления. Это немного похоже на ваше приложение, отправляющее электронную почту самому себе.
Регистрация для получения и сообщения выглядит следующим образом:
ViewControllerOne.m:
-(void)viewDidLoad //a likely place, but not the only place you might do this
{
....
// whatever else you're doing to initialize your VC, and then
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(iWasNotified:)
name:@"myNotification"
object:nil];
}
-(void)iWasNotified:(NSNotification *)notification
{
NSString *passedValue = (NSString *)notification.object;
NSLog(@"We got notified and received: %@", passedValue);
}
А затем отправить сообщение так же просто, как это:
ViewControllerTwo.m:
[[NSNotificationCenter defaultCenter]
postNotificationName:@"myNotification"
object:@"I'm passing you this NSString object!"];
Вы, очевидно, не ограничиваетесь передачей строки i n поле object:
. Несколько более вероятным будет использование self
, а затем у вас будет доступ к любым открытым полям контроллера представления сообщений.
Это их голые кости. Там намного больше тонкостей вы можете получить в, и все это выложил здесь: http://developer.apple.com/iphone/library/documentation/cocoa/Conceptual/Notifications/Introduction/introNotifications.html
Спасибо большое за ответ, но ... Я сожалею, я очень новые разработки iPhone SDK. Если вы можете продумать больше, какие уведомления и как их использовать. Можно ли предоставить пример кода. Я бы очень признателен. Спасибо – mshaaban
Большое спасибо за ваше объяснение. Это помогло мне понять концепцию уведомлений намного лучше. Хотя в моем приложении мне нужно было поделиться данными переменных экземпляра и методами экземпляра между контроллерами представлений, которые находятся в разных стеках контроллеров навигации, поэтому я закончил использование одноэлементного класса для взаимодействия между двумя диспетчерами. – mshaaban
В этом случае KVO может быть лучшим способом.Вы можете зарегистрировать определенный контроллер представления в качестве наблюдателя в определенных полях вашего синтаксиса данных и вызывать определенный метод, когда это поле будет изменено. Посмотрите документы Apple на это, это довольно просто. –