ABPeoplePickerNavigationController と ABPersonViewController を実装しました。ただし、ピープルピッカーをタブバーコントローラーに追加したところ、モーダルに表示されなくなりました。tabbarController はコントローラーへの参照を保持します。デフォルトの連絡先アプリの動作をさらに模倣するために、ABPersonViewController に大きな赤い「削除」ボタンを追加しました。私[personViewController setValue:[NSNumber numberWithBool:YES] forKey:@"allowsDeletion"];
はそうしていました。
ボタンをクリックすると、アドレス帳から指定された人が実際に削除されますが、PeoplePicker コントローラーのビューに戻ったときに、削除された連絡先がまだ存在しています。アプリをリロードして初めて、アドレス帳の参照が更新され、連絡先が表示されなくなりました。再起動せずに上記の連絡先をクリックすると、アプリがクラッシュするか、空の連絡先が表示されます。
私が思いつく最も簡単な解決策は、ABPeoplePickerNavigationController に連絡先アイテムをリロードさせることです。しかし、どうすればこれを行うことができますか?無数の「解決策」(setNeedsDisplay など) を試しましたが、何か足りないようです。他に解決策がある場合は、それらについて聞いてとてもうれしいです。
違いがあるかどうか、シミュレータでテストしています。