コードを管理しやすくするためにプロジェクトの1つをリファクタリングし始めましたが、タブバーコントローラーはどのタブが何を表すかというアイコンを失いました。これがないと、どのタブが並べ替えの目的であるかが少しわかりません。
ストーリーボード参照を使用しているときにタブバーコントローラーのアイコンを再び表示するにはどうすればよいですか?
添付の画像を参照してください。最初の3つのタブは「空白」ですが、リファクタリングしていない他のタブはアイコンとタイトルで表示されていることに注意してください。
ストーリーボードの参照に慣れていない人のために、私はここのチュートリアルに従っていました: http://code.tutsplus.com/tutorials/ios-9-staying-organized-with-storyboard-references--cms-24226
アイコンが正しく設定されていることを示すタスクストーリーボードのサンプル
Update-このアプローチはXcode9では機能しなくなったようです。
タブを正しく表示する方法は次のとおりです。
シーンの前にナビゲーションコントローラーを埋め込むと、通常どおりに編集できます。
次に、ストーリーボードの参照を選択します。
上部に移動し、[エディター]> [埋め込み]> [ナビゲーションコントローラー]をクリックします
XCode 11.1:次のアプローチでは、実行時に表示する目的のタブタイトルとアイコンを取得します。
Title
およびImage
プロパティを設定します。この時点で、正しいタイトルが実行時に表示されます(ただし、ストーリーボードエディターでのコンパイル時には表示されません)。アイコンもそこにあるなら、素晴らしい。そうでない場合は、画像参照が有効であり、タブバーアイテムと同じモジュールにある(つまり、同じフレームワークにある)ことを確認してみてください。それでも表示されない場合は、次のようなハックの回避策が機能します。
UITabBarController
から継承する新しいクラスを作成します。viewWillLayoutSubviews
を次のようにオーバーライドします。
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
// Set the tab bar image at runtime
if let exampleTab = tabBar.items?.first(where: { $0.title == "ExampleTitle" }) {
// To insert an image literal, type "Image" and select Image Literal
// from the autocomplete menu. An icon should appear.
// Double-click the icon and select the desired image from the grid.
exampleTab.image = Image Literal
}
}
最後に、タブバーアイテムが実行時に正しく表示されるはずです。外部フレームワークのストーリーボードのコンパイル時に(ストーリーボードエディターで)正しく表示する方法を誰かが知っている場合は、私に知らせてください。