どうでもいいというか、同じ現象に悩んでいるひとはほとんどいないと思うことで、2時間ほど悩んでいました。
連絡先の情報にアクセスしたくて、Appleが用意している簡易なUIであるABPeoplePickerNavigationControllerを使いました。
このABPeoplePickerNavigationControllerで、電話番号やメールアドレスなど表示したい内容を指定するdisplayedPropertiesというプロパティがあります。
ここに、それぞれの表示したい要素に対応したint型の数値をNSNumberでラップして、配列として渡します。
そのときに、先にプロパティを作ってあとでABPeoplePickerNavigationControllerを呼び出すようにして、プロパティは呼ぶメソッドによって変更するような設計にしていたのですが、何故か起動後毎回1度だけ、何も表示されない状態になっていました。
// このコードだとバグになる。
- (void)showAddressBook{
// ABPeoplePickerNavigationControllerの初期化より先に、先にkABEmailPropertyやkABPhonePropertyを使う。
NSArray *properties = @[@(kABPersonEmailProperty),@(kABPersonPhoneProperty)];
ABPeoplePickerNavigationController *apnvc = [ABPeoplePickerNavigationController new];
apnvc.displayedProperties = properties;
[self presentViewController:apnvc animated:YES completion:nil];
}
2回目以降は、ちゃんと指定した表示内容が表れるのですが、最初だけ表示されないのがほんとに謎でした。
きっとバグだと思っていたのですが、どうやらぼくがこのAPIを上手く使いこなせていないだけでした。
続きを読む →
これからも更新を続けていきますので、Feedlyへの登録をお願いします!