これも手伝ってくれるといいのですが...カスタムの背景画像を追加してナビゲーションバーをカスタマイズしたかったのです。私は完璧ですが、NavigationSwizzleと呼ばれる少し複雑な方法を見つけました。以前のプロジェクトでは深刻な問題は発生しませんでしたが、今は行き詰まっています...
AppDelegateから、この静的メソッドを呼び出しています。
@implementation SCAppUtils
+ (void)customizeNavigationController:(UINavigationController *)navController
{
//Customizing navigation BAR
UINavigationBar *navBar = [navController navigationBar];
[navBar setTintColor:kSCNavBarColor];
//Customizing TOOLBAR
[navController setToolbarHidden:NO animated:YES];
UIToolbar *toolBar = [navController toolbar];
UIImageView *imageView = (UIImageView *)[navBar viewWithTag:kSCNavBarImageTag];
UIImageView *imageView2 = (UIImageView *)[toolBar viewWithTag:kSCNavBarImageTag];
if (imageView == nil)
{
Utilities *utilities = [[Utilities alloc]init];
UIImage *img = [UIImage imageNamed:@"nav-bar-background.png"];
UIImage *img2 = [UIImage imageNamed:@"toolbar-background.png"];
imageView = [[UIImageView alloc] initWithImage:img];
imageView2 = [[UIImageView alloc] initWithImage:img2];
[imageView setTag:kSCNavBarImageTag];
[imageView2 setTag:kSCNavBarImageTag];
[navBar insertSubview:imageView atIndex:0];
[toolBar insertSubview:imageView2 atIndex:0];
[imageView release];
[imageView2 release];
[utilities release];
}
}
rootNavigationControllerで、スタック上で2番目のView Controllerを押して呼び出した後、右ボタンself.title、activityIndicatorが表示されません。コメントするか、atIndex:-1を[navBar insertSubview:imageView atIndex:0]行に設定すると; 次にボタンが表示されますが、カスタマイズした背景がなくなり、通常のiPhoneナビゲーションタブが表示されます。
rootNavigationControllerのdidSelectRowAtIndexには、次のものがあります。
//ADD BACK BUTTON TO VIEW
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Home" style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
//Home Button color
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:166.0 / 255 green:179.0 / 255 blue:191.0 / 255 alpha:1.0];
//PUSH TO NEXT VIEW
[self.navigationController pushViewController:detailViewController animated:YES];
前もって感謝します...
さらにコードや説明が必要な場合は、遠慮なく私に聞いてください...
よろしく、ルカ
編集:
わかりました。この質問をもっと簡単にすることができます。ナビゲーションバーにカスタムの背景画像があります。この画像は明らかに私の
self.navigationItem.title = @"TITLE";
バックグラウンドにあるimageViewの0.3にアルファを設定すると、タイトルが表示されます。
imageView = [[UIImageView alloc] initWithImage:image];
[imageView setAlpha:0.3];
[imageView setTag:kSCNavBarImageTag];
[navBar insertSubview:imageView atIndex:0];
だから問題は、navigationItem.titleをフロントに送信するにはどうすればよいですか?UIViewクラスの子孫ですか?
編集2: 本当に奇妙なことは、rootControllerにタイトルが(背景画像の上に)表示されているのに、別のviewControllerを押した後、タイトルが背景imageViewの後ろに表示されることです。