2009-08-21 10 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のテーブルビューの選択を解除する方法です。

+0

すてきな解決策! –