5

内にあるサブクラスCNContactViewControllerのスタックにをプッシュすると、上部のナビゲーション バーがほぼ完全に非表示になります。しかし、明るさを最大にすると、戻る矢印の後に「詳細」という単語が表示され、システム ステータス バーが表示されます。画面の隅をタップすると、CNContactViewController が実際に閉じられます。UITableViewControllerUINavigationController

ここに画像の説明を入力

もちろん、これは良くありません。おそらく、ユーザーはナビゲーション バーのテキストを表示することさえできず、ボタンを押して閉じることができないからです。

CNContactViewController のナビゲーション バーの色合いを、それを表示したビュー コントローラー (アプリの残りの部分) と同じにする方法はありますか?

CNContactViewController *controller = [CNContactViewController viewControllerForUnknownContact:person];

controller.contactStore = [[CNContactStore alloc] init];
controller.delegate = self;
controller.allowsActions = NO;

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

この問題は iOS 10 でのみ発生しており、10 未満のバージョンでは発生していないことに注意してください。また、[既存の連絡先に追加] をタップすると適切に着色されたナビゲーション バーが表示されますが、View Controller を閉じると再び壊れます。 .

ここに画像の説明を入力

繰り返しますが、私の質問は次のとおりです。CNContactViewController のナビゲーション バーの色合いを、それを表示したビュー コントローラー (アプリの残りの部分) と同じにする方法はありますか

4

2 に答える 2

2

2 番目のスクリーン ショットは、この問題の理由を示しています。バー (またはバー ボタン アイテム全般) の色合いを白に設定しています。したがって、それらは透明なナビゲーション バーの前では白く、Contact View Controller では白い背景になります。

バーの色合いを直接変更することはできませんが、次の 2 つの方法のいずれかで解決できます。

  • 1 つは、ナビゲーション バーを非透明にすることです。その場合、Contact View Controller のナビゲーション バーは黒くなり、白いバーのボタン アイテムが表示されます。

  • もう 1 つの方法は、ナビゲーション バーの色合い (バーの色合いではなく、バーのボタン項目に伝達される色合い) を、連絡先ビュー コントローラーのプッシュ時に変更し、ポップ時に元に戻すことです。

編集さて、新しい連絡先のビュー コントローラーは、あなたの前に表示されるさらなるビュー コントローラーであるため、さらに問題があることがわかりました。白いバー ボタン アイテムの設定を放棄することを拒否する場合は、外観プロキシを使用して、連絡先ビュー コントローラーをプッシュするときに UIBarButtonItem の色合いを別の色に設定し、ナビゲーション コントローラーを使用するときに白にリセットする必要があります。デリゲートは、ユーザーがビュー コントローラーに戻っていることを示します。

于 2016-11-15T01:42:57.637 に答える