0

私のiOSアプリでは、以下のコードがすべてのクラスで何度も繰り返されています。

メソッドを NSObject クラスにキャストしようとしましたが、「navigationItem」の使用でエラーが発生しました。

-(void)customDesign {
//background pattern
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"BG-pattern.png"]];

// nav bar
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"top_bar.png"] forBarMetrics:UIBarMetricsDefault];

//back button color  #2974c3
[self.navigationController.navigationBar setTintColor:[UIColor colorWithRed:41.0/255.0f green:116.0/255.0f blue:195.0/255.0f alpha:1.0]];

//settings button
UIImage* settingsImage = [UIImage imageNamed:@"ButtonMenu.png"];
CGRect frameimg = CGRectMake(0, 0, settingsImage.size.width, settingsImage.size.height);
UIButton *uiSettingsButton = [[UIButton alloc] initWithFrame:frameimg];
[uiSettingsButton setBackgroundImage:settingsImage forState:UIControlStateNormal];
[uiSettingsButton addTarget:self action:@selector(menuButton) forControlEvents:UIControlEventTouchUpInside];
[uiSettingsButton setShowsTouchWhenHighlighted:YES];
//add buton to navbar
UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithCustomView:uiSettingsButton];
self.navigationItem.leftBarButtonItem = settingsButton;

}

4

1 に答える 1

0

UIViewController または UITableViewController (使用している方) の独自のサブクラスを作成し、このコードをそのサブクラスの viewDidLoad メソッドに配置する必要があります。このコードを必要とするすべてのコントローラーは、カスタム クラスを拡張できます。これにより、このコードをどこにでも書かなければならない手間が省けます。

カスタム サブクラス:

@interface CustomViewController : UIViewController

@end

サブクラスの viewDidLoad メソッド:

@implementation CustomViewController
    - (void)viewDidLoad {
        [super viewDidLoad];

        // all your custom code here...
    }
@end

共通の処理を行いたいコントローラのカスタム クラスを拡張します。

@interface VisuallyChangedViewController : CustomViewController

@end

@implementation VisuallyChangedViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
    }
@end
于 2013-03-12T22:37:11.860 に答える