簡體   English   中英

ABPersonViewController將不會在Push上顯示

[英]ABPersonViewController won't show on Push

因此,這是場景,我有一個SearchController,它顯示我的應用程序聯系人列表中的過濾結果,以及顯示在我的地址簿中的結果。

我的didSelectObject:atIndex方法中存在用於推送ABPersonViewController的代碼。 這是代碼:

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];

該代碼塊在標准TTTableViewController上正常工作,但在我的searchController上不起作用。

在此處輸入圖片說明

這是屏幕截圖。 因此,您可以看到不存在NavigationController。 Three20默認設置。 帶有地址簿圖標的單元格是Item,在點擊手勢時啟動ABPersonViewController

您的searchController如何顯示? 它有導航控制器嗎?

檢查self.navigationController是否為nil。

因此,我找到了解決問題的方法。

首先,我創建了一個類,它是ABPersonViewController的子類。 然后創建我自己的-initWithNavigatorURL:query:方法。

在我的SearchDisplayController的TTTableViewController類上,在-didSelectObject:atIndexPath:方法內部,我有以下代碼塊:

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];

它不像通常在導航時那樣具有動畫效果,但可以完成工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM