使用不同的按钮来访问相同的ViewController

时间:2013-06-21 17:49:59

标签: ios xcode button viewcontroller

我在XCode上创建一个游戏,其中包含一个菜单,其中包含设置条件的按钮(即“播放到30”,“播放到20”等)。我想要这些按钮创建一个与我的游戏相同的ViewController的segue,唯一的区别是在游戏结束之前必须达到多少分。对于每个设置,具有相同ViewController的倍数是非常低效的。有没有解决的办法?

1 个答案:

答案 0 :(得分: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.
}

希望这有助于:)