2009-08-21 2 views
5

내 앱에서 ABPeoplePickerNavigationController를 탭으로 표시하고 있습니다. 사용자가 이름을 클릭 한 다음 전자 메일 주소를 클릭하면 전자 메일 주소로 작업을 수행합니다.ABPeoplePickerNavigationController의 deselectRowAtIndexPath

이후에 나는 퇴색하려고 선택한 사람과 재산을 원합니다 (강조 표시하지 않음).

정상적인 테이블에서는 deselectRowAtIndexPath를 호출합니다. 하지만 ABPeoplePickerNavCont를 사용하면 테이블에 대한 액세스 권한이없는 것 같으며 어떤 indexPath가 선택되었는지도 알지 못하며 행 선택을 취소하기위한 API도 없습니다.

대부분의 앱에서 ABPeoplePickerNavCont는 모달 방식으로 사용되므로 행이 여전히 강조 표시되어있어 문제가 해결되지 않아 문제가 해결되지 않습니다. 하지만 내 응용 프로그램에서는 (전화 응용 프로그램의 연락처 탭과 마찬가지로) 해고되지 않습니다.

아이디어가 있으십니까?

답변

3

애니메이션없이 peoplepicker를 닫은 다음 애니메이션없이 다시 표시하십시오. 좋아 보인다.

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person{ 

    [self dismissModalViewControllerAnimated:NO]; 

    [self presentModalViewController:peoplePicker animated:NO]; 
     return NO; 
} 
+0

제안 해 주셔서 감사합니다. 내 PeoplePicker는 모달로 표시되지 않습니다. 탭 막대의 탭이므로 ... 이렇게하면 해제 할 수 없습니다. –

10

이것은 내가하고있는 일이며 완벽하게 작동하는 것 같습니다. 또한 항목을 선택/선택 취소 할 때 체크 표시가있는 액세서리를 추가합니다. 당신이 무슨 생각을하는지 제게 알려주세요. 이 도움이

UIView *view = peoplePicker.topViewController.view; 
    UITableView *tableView = nil; 
    for(UIView *uv in view.subviews) 
    { 
    if([uv isKindOfClass:[UITableView class]]) 
    { 
     tableView = (UITableView*)uv; 
     break; 
    } 
    } 
if(tableView != nil) 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:[tableView indexPathForSelectedRow]]; 

    cell.accessoryType = cell.accessoryType == UITableViewCellAccessoryNone ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; 

    [tableView deselectRowAtIndexPath:[tableView indexPathForSelectedRow] animated:YES]; 
} 

희망 : 감사합니다 :) 로비 발레 '대답을 수정

UIView *view = peoplePicker.topViewController.view; 
UITableView *tableView = nil; 
for(UIView *uv in view.subviews) 
{ 
    if([uv isKindOfClass:[UITableView class]]) 
    { 
     tableView = (UITableView*)uv; 
     break; 
    } 
} 

if(tableView != nil) 
{ 
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:[tableView indexPathForSelectedRow]]; 

    cell.accessoryType = cell.accessoryType == UITableViewCellAccessoryNone ? UITableViewCellAccessoryCheckmark : UITableViewCellAccessoryNone; 

    [cell setSelected:NO animated:YES]; 
} 
+0

Excillent ....... – Muzammil

4

이 내가 ABPeoplePickerNavigationController의의 tableview의 선택을 해제하는 방법입니다.

+0

멋진 솔루션! –

관련 문제