2011-02-08 5 views
0

私は現在、バックグラウンドのカスタムイメージで私のアプリにuinavigationbarを持っています。 私はこれをカテゴリテクニックを使って実装しました。このような何か:iphone - uinavigationbar新しいビューコントローラがスタックからポップされるときのカスタムイメージの変更

@implementation UINavigationBar (CustomImage) 
- (void)drawRect:(CGRect)rect { 
UIImage *image = [UIImage imageNamed: @"NavigationBar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 

私はそれはまた、メソッドのスウィズリングすることが可能であるが、すべてのものから、私は、これは私のコードが壊れますUIKitの変更などの偉大なアプローチではありません読んだと思います。 私がこのアプローチに抱いている問題は、新しいView Controllerがスタックからポップされたときに背景イメージを変更することです。私は彼らがプッシュされたときに画像を変更することができるようだが、私はビューコントローラをポップするときに私は画像を元に戻すことができません。ユーザーがナビゲーションコントローラの「戻る」ボタンをタップしてそのポイントで画像の変更をトリガーする方法はありますか? この種の練習がAppleによって落胆されているかどうか不思議です。

答えて

1

このメソッドを使用して、プログラムによってバックグラウンドイメージを設定できます。 Link to Apple Docs

willShowViewController:animated 
+0

ありがとう!!!それを試みます。 – noahd

+0

これは素晴らしい作品です!再度、感謝します! – noahd

0

あなたは

は、グローバル定数変数を作成するには、この方法を試みることができます。

@implementation UINavigationBar (CustomImage) 
- (void)drawRect:(CGRect)rect { 
UIImage *image =nil; 
if(CONSTANT==1) 
    image= [UIImage imageNamed: @"NavigationBar.png"]; 
else 
    image= [UIImage imageNamed: @"newbar.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; 
} 
@end 

のUIViewControllerで

-(void)viewWillAppear:(BOOL)animated{ 
    CONSTANT=2;//CONSTANT=1 
    [self.navigationController.navigationbar setNeedsDisplay]; 
} 
関連する問題