0

ユーザーが値を入力できるように、最初のView ControllerをUINavigationControllerすべて設定しました。また、カスタム UILabel を として持っているtitleViewので、緑色のテキストで完全に「フラット」なナビゲーション バーを表示できます。

次に、 をUIButton押すと、新しいビューがスタックにプッシュされます。これによりUINavigationItem、カスタムの titleView を保持する が明らかに削除されます。

私の質問はtitleView、ナビゲーション バーのカスタム ビューを確実に使用し続けるにはどうすればよいですか?

私は明らかにクラスのdelegateメソッド (willPushおよびdidPush) を使用しようとしましたが、最初のメソッドには明らかにtopItemまだありません。そのため、UILabel を現在の に追加することになりnavigationItemdidPushView 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.
4

1 に答える 1