0

私自身の答えについては以下を参照してください。何時間もかけて理解しました。うまくいけば、誰かの時間を節約できます。

現在、UI に ABPeoplePickerNavigationController をモーダルに表示するボタンがありますが、これは完全に正常に動作します。これを拡張してお気に入りと最近使用したものを実装したいので、ユーザーがボタンを押したときに、1 つのタブに ABPeoplePickerNavigationController を持つ UITabBarController を表示し、次にお気に入りと最近使ったものを持つ他の 2 つのタブを表示します (これは UITableViewControllers になると推測しています)。私は基本的に、タブ バー コントローラーが、連絡先、お気に入り、および最近のタブ (電話番号だけではなく) 用の組み込みの電話アプリのモーダル バージョンのように動作することを望んでいます。

私はこれを行う方法についての解決策を得るためにあらゆる場所を検索してきました (私は TabBarControllers を初めて使用します)。これまでのところ、プログラムで少し成功させようとしましたが、Interface Builder ではまったく成功しませんでした。白い画面が表示されるのを見たことがあります。

連絡先やお気に入りを見つけることができないように見える、これに近いことをすでに行っているライブラリはありますか?

両方の方法で私が試したことと、それがどのように機能したかの内訳は次のとおりです。

プログラムによる: 基本的には、単独でモーダル表示するつもりだったように ABPeoplePickerNavigationController を作成しますが、代わりに setViewControllers メソッドを使用して UITabBarController インスタンスに追加します。これを提示すると、タブに「グループ」と表示され、アイコンを連絡先のシステムアイコンに変更する方法や、タブバーボタンを押してグループに戻らないように動作を変更する方法がわかりません(組み込みの電話アプリは、タブ バー ボタンを押してもそのレベルまでバックアップされません)。上で述べたように、私は基本的に、連絡先、お気に入り、最近の履歴用の組み込みの電話アプリと同じように動作することを望んでいます.

IB: 私はたくさんのことを試しましたが、モーダルで表示しようとすると常に白い画面しか表示されません。

4

1 に答える 1

2

1 つは ABPEoplePickerNavigationController で、もう 1 つはテーブル ビューが昨夜機能していました。これが誰かに役立つことを願っています。ピッカー用の現在のビュー コントローラーとテーブルビュー用の 2 つのプロトコルを追加し、それぞれのデリゲート関数をコードに追加する必要があることに注意してください。どのプロトコルを採用するか、どの関数を作成するかがわからない場合は、それぞれの Apple dev ドキュメントを確認してください。

ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
UITabBarItem *peoplePickerTabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemContacts tag:0];
picker.tabBarItem = peoplePickerTabBarItem;
UITableViewController *tvc = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
tvc.tableView.delegate = self;
tvc.tableView.dataSource = self;
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:tvc];
UIBarButtonItem *uibbiCancel = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStylePlain target:self action:@selector(cancelTable)];
tvc.navigationItem.rightBarButtonItem = uibbiCancel;
tvc.title = @"Recents";
UITabBarItem *nvcTabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemRecents tag:2];
nvc.tabBarItem = nvcTabBarItem;
tbc = [[UITabBarController alloc] init];
NSArray *sections = [[NSArray alloc] initWithObjects:picker, nvc, nil];
[tbc setViewControllers:sections];
[self presentModalViewController:tbc animated:YES];
[nvcTabBarItem release];
[uibbiCancel release];
[tvc release];
[peoplePickerTabBarItem release];
[picker release];
[nvc release];
[sections release];
[tbc release];
于 2011-03-08T16:29:07.890 に答える