ユーザーが値を入力できるように、最初のView ControllerをUINavigationController
すべて設定しました。また、カスタム UILabel を として持っているtitleView
ので、緑色のテキストで完全に「フラット」なナビゲーション バーを表示できます。
次に、 をUIButton
押すと、新しいビューがスタックにプッシュされます。これによりUINavigationItem
、カスタムの titleView を保持する が明らかに削除されます。
私の質問はtitleView
、ナビゲーション バーのカスタム ビューを確実に使用し続けるにはどうすればよいですか?
私は明らかにクラスのdelegate
メソッド (willPush
およびdidPush
) を使用しようとしましたが、最初のメソッドには明らかにtopItem
まだありません。そのため、UILabel を現在の に追加することになりnavigationItem
、didPush
View Controller のアニメーション化との間に目に見える遅延が生じます。新しいtitleView
ラベルが適用されます。
私はたくさん試してみましたが、何も正しく機能していないようです。新しいView Controllerをプッシュするときにアニメーションを失わないようにしたいと思います。
何か案は?
編集:私のコードの大まかな例を以下に投稿しました.XCodeから直接貼り付けるのではなく、私がやっていることの概要であるため、100%完璧ではありません.
// This code lives in the app delegate
// Set up the root view controller that needs to be contained
UIViewController *myFrontView = [[MYFrontViewController alloc] init];
// Set up the uinavigationcontroller
UINavigationController *myNavController = [[MYNavigationController alloc] initWithRootViewController: myFrontView];
// Customise the initial UINavbar titleView:
UILabel *myLabel = [[UILabel alloc] initWithText:@"My custom text"];
// Change the text Color.
myLabel.textColor = [UIColor redColor];
// Set my new label as the custom titleview.
[myNavController.navigationBar.topItem setTitleView: myLabel];
// Boilerplate code to make myNavController the rootViewController of the window etc.