2011-11-15 3 views
0

여기 시나리오가 있습니다. 내 연락처 목록과 내 주소록에도있는 필터링 된 결과를 표시하는 SearchController가 있습니다.ABPersonViewController가 푸시시 표시되지 않음

ABPersonViewController를 푸시하는 코드가 내 didSelectObject : atIndex 메소드에 있습니다. 여기 코드는 다음과 같습니다

TableCellClass *selectedCell= (TableCellClass *)[self.tableView cellForRowAtIndexPath:indexPath]; 

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef arrayOfAllPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
ABRecordRef thisPerson = CFArrayGetValueAtIndex(arrayOfAllPeople,selectedCell.contactIndex); 
ABPersonViewController *picker = [[ABPersonViewController alloc]init]; 
picker.personViewDelegate = self; 
picker.displayedPerson = thisPerson; 
picker.allowsEditing = YES; 
[self.navigationController pushViewController:picker animated:YES]; 

이 코드 블록 내 searchController에서 작동하지 않습니다 어떻게 든 표준 TTTableViewController에 잘 작동하지만. 여기

enter image description here

는 방법으로 촬영 한 화면입니다. 따라서 볼 수 있듯이 NavigationController가 없습니다. 이것은 Three20에서 기본값입니다. 주소록 아이콘이있는 셀은 탭 제스처시 ABPersonViewController를 실행하는 항목입니다.

답변

0

그래서 내 문제에 대한 해결책을 찾았습니다.

먼저 ABPersonViewController의 하위 클래스 인 클래스를 만들었습니다. 그런 다음 내 자신의 -initWithNavigatorURL : query : 메소드를 작성했습니다. atIndexPath : 다음 TTTableViewController 상기 -didSelectObject 안에, 내 SearchDisplayController 인 클래스

방법은, 내가 코드 블록이 있습니다

TTTableItemCell *selectedCell= (TTTableItemCell *)[self.tableView cellForRowAtIndexPath:indexPath]; 

ABAddressBookRef addressBook = ABAddressBookCreate(); 
CFArrayRef arrayOfAllPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 

ABRecordRef thisPerson = CFArrayGetValueAtIndex(arrayOfAllPeople,selectedCell.contactIndex); 
ABPersonViewController *picker = [[ABPersonViewController alloc]initWithNibName:nil bundle:[NSBundle mainBundle]]; 
picker.personViewDelegate = self; 
picker.displayedPerson = thisPerson; 
picker.allowsEditing = YES; 

NSNumber *allowsEditing; 

if (picker.allowsEditing) { 
    allowsEditing = [[NSNumber alloc]initWithInt:1]; 
} 
else{ 
    allowsEditing = [[NSNumber alloc]initWithInt:0]; 
} 

TTURLAction *urlAction = [[[TTURLAction alloc] initWithURLPath:@"tt://GJABPersonView"] autorelease]; 
urlAction.query = [NSDictionary dictionaryWithObjects:[NSMutableArray arrayWithObjects:self, thisPerson,allowsEditing, nil] forKeys:[NSMutableArray arrayWithObjects:@"personViewDelegate",@"displayedPerson",@"allowsEditing", nil]]; 
urlAction.animated = YES; 
[[TTNavigator navigator] openURLAction:[urlAction applyTransition:UIViewAnimationTransitionFlipFromLeft]]; 
[allowsEditing release]; 

그것은 정상적으로 탐색 않을 때처럼 애니메이션을하지 않습니다하지만 않습니다 작품 :

0

searchController는 어떻게 표시됩니까? 네비게이션 컨트롤러가 있습니까?

self.navigationController이 0이 아닌지 확인하십시오.

+0

그래, 그것은 아무 가치가 보유하고있다. 그러면 어떻게 해결할 수 있을까요? 새 navigationController를 만들면 Three20의 탐색 매핑이 중단됩니까? –

+0

약 320은 확실하지만 navigationController에 대한 유효한 포인터를 가져와야합니다. 어떻게 표시됩니까? – railwayparade

+0

스크린 샷을 볼 수 있도록 내 게시물을 편집했습니다. :) –