서브 클래스가 ABNewPersonViewController
인 클래스가 있습니다. 이해하는 바와 같이 탐색 메뉴의 완료 버튼을 클릭하면 위임 방법ABNewPersonViewController의 "완료"버튼을 무시하는 방법
- (void)newPersonViewController:(ABNewPersonViewController *)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person
이 호출됩니다. 그러나 위임 메서드에 들어가기 전에 변경 내용이 주소록에 저장됩니다.
내가 원하는 것은 저장 버튼을 누르 자마자. 나는 그가 변화와 그 변경 사항을 취소할지 여부를
- ,이 개 버튼은 사용자 요청으로
UIView
을로드
필요하지만이 변경되기 전에 수행해야합니다 주소록에 반영됩니다. 그리고 UIView
의 첫 번째 버튼을 클릭 할 때만 변경 사항이 주소록에 저장되어야합니다.
두 번째 단추를 클릭하면보기가 사라지고 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];
}
}
에
나는 위에 UIAlertView
와 UIView
을로드하고 있습니다.
내가 저장 버튼을 트리거하고 있지 않다 '- (void) actionSave : (UIBarButtonItem *) sender' 메소드 내부의 액션. 대신 버튼이있는 다른 뷰를로드하고 있습니다. 그리고보기 중 하나의 단추를 클릭하면 다른보기가로드됩니다. 이보기에서 버튼을 클릭하면 저장 버튼 동작을 트리거해야합니다. 이 작업을 수행 할 때까지 완료된 버튼의 할당이 취소됩니다. 내가 직면하고있는 문제가 그 것이다. –
필요하다면 컨트롤러가 할당 해제되지 않도록 어딘가에서 ABNewPersonViewController 인스턴스에 대한 강력한 (유지 된) 참조를 유지하려고 시도 했습니까? – Jilouc
나는 –