В MainViewController
, где вы создаете PopoverView
, обязательно установите его свойство delegate
, в противном случае отправка сообщений на delegate
в PopoverView
ничего не даст.
Например, в MainViewController.m
:
PopoverView *pov = [[PopoverView alloc] initWithNibName:nil bundle:nil];
pov.delegate = self; // <-- must set this
thePopoverController = [[UIPopoverController alloc] initWithContent...
Я не уверен, зачем вам нужна переменная sendDelegateMessages
.Даже с этим bool вы должны установить свойство delegate
, чтобы PopoverView
имел фактическую ссылку на объект для отправки сообщений.
Если вы хотите убедиться, что объект delegate
реализовал метод, который выВы собираетесь позвонить, вы можете сделать это вместо этого:
if ([delegate respondsToSelector:@selector(buttonAPressed)])
[delegate buttonAPressed];
Кроме того, свойство delegate
должно быть объявлено с использованием assign
(или weak
, если используется ARC) вместо retain
(см. Зачем использовать слабый указатель для делегирования? для объяснения):
@property (nonatomic, assign) id<PopoverDelegate> delegate;
Другое дело, если вы не используете ARC, вам нужно добавить [textfield release];
в конце метода buttonAPressed
в MainViewController
, чтобы избежать утечки памяти.