我如何将参数传递给从其他类调用的ViewController

use*_*232 2 ios5

您好,我是Objective C的新手,我遇到了问题.我有一个View控制器,我可以在其中调用我的游戏的level_1.

GameViewController *level1 = [self.storyboard instantiateViewControllerWithIdentifier:@"GameIdentifier"];
[self.navigationController pushViewController:level1 animated:YES];
Run Code Online (Sandbox Code Playgroud)

它工作正常.

... 我想使用相同的ViewController(GameViewController)制作两个不同的级别(level_2和level_3)(我将从同一个类中调用它们),但我不知道如何传递参数(例如int)到GameViewController(该参数将是当前级别,例如2或3).

小智 13

您需要向GameViewController类添加一个实例变量(以及一些访问器来获取/设置它),然后将级别编号分配给"level1"或"level2"实例.

下面是一些示例代码,向您展示如何编写GameViewController类:

// GameViewController.h

@interface GameViewController : UIViewController
@property (nonatomic, readwrite, assign) int level;
@end

// GameViewController.m

@implementation Test
@synthesize level;

- (void)viewDidLoad
{
    [super viewDidLoad];

    if (level == 1)
    {
        // Do something for level 1
    }
    else if (level == 2)
    {
        // Do something for level 2
    }
}

@end
Run Code Online (Sandbox Code Playgroud)

然后,您需要将级别编号传递给视图控制器:

GameViewController *level1 = [self.storyboard instantiateViewControllerWithIdentifier:@"GameIdentifier"];
level1.level = 1;
[self.navigationController pushViewController:level1 animated:YES];
Run Code Online (Sandbox Code Playgroud)