0

プログラムで連絡先を表示するために、プログラムでこの関数を使用しています。しかし、abpersonview のフィールドをクリックしても何も起こりません。

- (BOOL)personViewController:(ABPersonViewController *) personViewControllershouldPerformDefaultActionForPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
        {
            NSLog(@"IN");
                return YES;
        }

私のクラスには AbPersonView のオブジェクトがあります。以下は私のクラス定義です

 #import <UIKit/UIKit.h>
    #import <CoreFoundation/CoreFoundation.h>
    #import<AddressBookUI/AddressBookUI.h>




         @interface ContactTable : UIViewController<UITableViewDataSource,UISearchBarDelegate,UITableViewDelegate,ABNewPersonViewControllerDelegate,UIAlertViewDelegate,ABPersonViewControllerDelegate>

         @property  CFMutableArrayRef  filteredData;

            @property  CFArrayRef contactAdd;

            @property ABRecordRef person;

            @property ABAddressBookRef addressBook;

            @property ABPersonViewController *currentPersonView;

            @property (weak, nonatomic) IBOutlet UISearchBar *contactSearchBar;

            @property (weak, nonatomic) IBOutlet UITableView *contactTableView;

            @end

そして、私はこのCurrentpersonviewを次のように使用しています

 self.currentPersonView=[[ABPersonViewController alloc]initWithNibName:@"ContactTable.h" bundle:nil];

        if(isFiltered)

            self.person=CFArrayGetValueAtIndex(self.filteredData,indexPath.row);

        else

            {
            NSLog(@"%ld index:%d", CFArrayGetCount(self.contactAdd),indexPath.row);
            self.person=(ABRecordRef)CFArrayGetValueAtIndex(self.contactAdd,indexPath.row);
            }

        self.currentPersonView.displayedPerson=&(*self.person);


        self.currentPersonView.allowsEditing=YES;

        self.currentPersonView.allowsActions=YES;

        [self.navigationController pushViewController:self.currentPersonView animated:YES];

しかし、ABPersonViewをクリックすると、関数の応答が得られません.....

何が問題でしょうか??

4

1 に答える 1

0

デリゲートを設定する必要があると思います:

 self.currentPersonView.personViewDelegate = self;//or some other class...

デリゲート クラスに対応するデリゲート メソッドを実装します。

– personViewController:shouldPerformDefaultActionForPerson:property:identifier:

このクラスのインターフェースでも必ず宣言してください。

于 2013-09-30T11:00:16.547 に答える