をサブクラス化するクラスがあり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
その上にwithをロードしUIAlertView
ています。