У меня есть класс, который подклассы ABNewPersonViewController
.Как я понимаю, при нажатии кнопки «Готово» на панели навигации вызывается метод делегата
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person
.Но перед вводом метода делегата изменения будут сохранены в адресной книге.
Что мне нужно, так это как только кнопка сохранения будет нажата.Мне нужно загрузить UIView
с 2 кнопками, спрашивающими пользователя:
- , хочет ли он изменений и
- , следует ли ему прервать внесенные изменения,
Но это следует сделать до того, как изменения будут отражены в адресной книге.И только по нажатию первой кнопки в UIView
изменения должны быть сохранены в адресной книге.
При нажатии 2-й кнопки вид должен исчезнуть, и я должен вернуться к классу контроллера вида, из которого загружен UIView
.
У меня вопрос, как мне загрузитьпредставление по нажатию кнопки сохранения, прежде чем изменения будут отражены в адресной книге
Я создал пользовательскую кнопку сохранения
UIBarButtonItem *okBtn = self.navigationItem.rightBarButtonItem;
UIBarButtonItem *saveBtn = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:okBtn.target action:okBtn.action];
self.navigationItem.rightBarButtonItem =saveBtn;
[saveBtn release];
При действии кнопки сохранения элемент управления переходит к делегатуМетод
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person` .
Я хочу, чтобы элемент управления перешел к моему пользовательскому методу, где я могу загрузить свой UIView
до сохранения изменений в адресной книге.
Редактировать: Когда я загружаюABNewPersonViewController
ABPersonViewController *displayVcardViewController = (ABPersonViewController*)[self.navigationController visibleViewController];
ABRecordRef person = displayVcardViewController.displayedPerson;
EditAddressNewPersonDetailViewController *newVCardViewController = [[EditAddressNewPersonDetailViewController alloc] init];
newVCardViewController.displayedPerson = person;
newVCardViewController.newPersonViewDelegate = self;
newVCardViewController.isEditingMode = YES;
[self.navigationController setToolbarHidden:YES];
[self.navigationController pushViewController:newVCardViewController animated:YES];
[newVCardViewController release];
Разве это не сильная ссылка или нет Где я должен включить сильную ссылку.
Вкл.
- (void)actionSave:(UIBarButtonItem *)sender {
if([[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]) {
[self.myView setFrame:CGRectMake(0, 0, 320, 480)];
[[UIApplication sharedApplication].keyWindow addSubview:self.myView];
UIActionSheet * action = [[UIActionSheet alloc]initWithTitle:@""
delegate:self
cancelButtonTitle:@"Do"
destructiveButtonTitle:@"Cancel"
otherButtonTitles: nil];
action.tag = 101;
[action showInView:self.view];
[action release];
}
}
Я загружаю UIView
с UIAlertView
над ним.