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