1

私はiOS開発にかなり慣れていません。私の要件は、5 つの画面を含むアプリを設計していることです。すべての画面に共通のUIコントロールのセット(各画面のタブバーのように機能する1つのUIImageView 5つのUIButton)があります。ボタンをクリックすると、ビューの下半分のみが関連する詳細で変更される必要がありますが、ボタンはそのまま残ります (ウィンドウのタブ コントロールと同様)。

このデザインを実現する方法はありますか?コードを繰り返さずに複数の画面で UI コントロールを共有できますか、またはボタンがクリックされたときに画面の下半分だけを変更する方法はありますか?

4

1 に答える 1

0

UIControls を作成する別のクラスを作成し、各ビュー コントローラーに対して適切なメソッドを呼び出して、必要な UIControls を取得することができます。

@interface UIControlMaker : NSObject{

    id controlmakerDelegate; // This is so that you can send messages to the viewcontrollers 
}
@property (nonatomic,retain) id controlmakerDelegate; // Release it in dealloc method

- (id)initWithDelegate:(id)delegate;
- (UIView *)createCommonUIControls;

実装ファイル内

@implementation UIControlMaker

@synthesize controlmakerDelegate;

- (id)initWithDelegate:(id)delegate{

    if(self = [super init]){
        [self setControlMakerDelegate:delegate];
        return self;
    }else
        return nil;
}

- (UIView *)createCommonUIControls{

      UIView *uicontrolsHolder = [[UIView alloc] initWithFrame:CGRectMake(2,40,320,50)];

      // Create as many uicontrols as you want. It'd be better if you have a separate class to create them

     // Let's create a button for the menuItem
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0 , 0, 50, 35)];
    button.backgroundColor = [UIColor clearColor];
    [button setTitle:@"Button 1" forState:UIControlStateNormal];
    [button addTarget:controlmakerDelegate action:@selector(buttonOnClick) forControlEvents:UIControlEventTouchUpInside];

      [uicontrolsHolder addView:button];
      [button release];

      // Add more uicontrols here

      retun [uicontrolsHolder autorelease];
}

次に、ビュー コントローラーで UIControlMaker のインスタンスを作成し、ビュー コントローラーに追加できるビューを返す createCommonUIControls メソッドを呼び出します。それが明らかだったことを願っています。

于 2013-01-16T01:25:24.627 に答える