Я использую ABNewPersonViewController
. Я сохраняю кнопку «Готово» (rightBarButtonItem
из ABNewPersonViewController
) на другую кнопку, чтобы метод делегата
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person
не вызывается, пока не будет нажата кнопка «Готово». Мой метод viewDidLoad
такой же, как
- (void)viewDidLoad {
[super viewDidLoad];
self.defaultRightBarButtonItem = self.navigationItem.rightBarButtonItem;
UIBarButtonItem *saveBtn = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemSave
target:self
action:@selector(actionSave:)];
self.navigationItem.rightBarButtonItem = saveBtn;
[saveBtn release];
}
При нажатии кнопки в другом представлении я запускаю действие кнопки «Готово»
[self.defaultRightBarButtonItem.target
performSelector:self.defaultRightBarButtonItem.action
withObject:self.defaultRightBarButtonItem.target];
Иногда метод вызывается, а иногда не работает. Если я просто отредактирую поле адреса электронной почты или поле номера телефона контакта и попытаюсь сохранить его, метод будет вызван. Но если я попытаюсь отредактировать поля адреса, а затем сохранить, метод не вызывается. Что может быть причиной этого.
Изменить: выяснилось, что метод делегата не запускается при загрузке нового представления. И это происходит (загружается новый вид) только тогда, когда редактируются такие поля, как Country, Ringtone. Это когда метод делегата не запускается. Во всех остальных случаях срабатывает метод делегата. Теперь есть предложения?
NSLog(@"%@", self.defaultRightBarButtonItem)
должен выполнять работу в большинстве случаев. Если- (NSString *)description
не переопределен вашим классом, он напечатает значение указателя. - person MrTJ   schedule 21.03.2012<UIBarButtonItem: 0xf6c9560> <MyViewController: 0x8542430>
в журнале. - person Xavi Valero   schedule 21.03.2012