Общим решением является делегирование.Вы создаете пользовательский подкласс UIView
, который знает, как сообщать информацию заинтересованным лицам:
@interface MyView : UIView {}
@property(assign) id delegate;
@end
@implementation MyView
- (void) somethingHappened
{
[delegate stringDidChange:newStringValue];
}
@end
@implementation MyController
- (void) viewDidLoad
{
MyView *subview = …;
[subview setDelegate:self];
}
- (void) stringDidChange: (NSString*) newStringValue
{
NSLog(@"New string value reported from the view: %@.", newStringValue);
}
@end
Если вы хотите, вы можете создать протокол для делегата, чтобы компилятор мог проверить большевещи для тебя.Обратите внимание, что делегат является назначенным свойством, а не сохраняется, потому что сохраненное свойство приведет к циклу сохранения .
Проблема также может быть решена с помощью уведомлений, KVO или блоков.