0

XCode でゲームを作成しています。このゲームには、設定条件 (「30 までプレイ」、「20 までプレイ」など) のボタンを含むメニューがあります。これらのボタンでゲームと同じセグエを作成したいのですViewControllerが、唯一の違いは、ゲームが終了するまでに達成しなければならないポイントの数です。ViewController設定ごとに同じものを複数持つのは非常に非効率的です。これを回避する方法はありますか?

4

1 に答える 1

0

ゲーム ビュー コントローラーで、次のようにカスタム イニシャライザーを作成します。

// add in GameViewController.m
@implementation GameViewController
-(id)initWithLimit:(int)limit {
    self = [super initWithNibName:@"NibName" bundle:nil];
    if (self) {
       _limit = limit;
    }
    return self;
}

// add in GameViewController.h
@interface GameViewController : UIViewController
@property (nonatomic) int limit;
@end

メニューのボタン アクションを次のように実装します。

-(IBAction)play30 {
     GameViewController *game = [[GameViewController alloc] initWithLimit:30];

     // Handle game view here.
}

この回答は、ユーザーがボタンをタップしたときに GameViewController の新しいインスタンスを作成することを前提としています。ボタンがテープされるたびに新しい ViewControllerSubclass をインスタンス化したくない場合は、メニュー ビュー コントローラーで GameViewController プロパティを作成し、ゲーム ビュー コントローラーの遅延インスタンス化を使用できます。

 - (GameViewController *)game {
      if (!_game) _game = ...;
      return _game;
 }

 -(IBAction)play20 {
     // Assuming game is a property.
     self.game.limit = 20;

     // Perform setup that expects the limit property to be set.
     [self.game setup];

     // Handle game view here.
}

これが役に立ったことを願っています:)

于 2013-06-21T19:16:52.423 に答える