как я могу передать аргументы в ViewController вызова из другого класса - PullRequest
2 голосов
/ 24 декабря 2011

Здравствуйте, я новичок в Objective C и у меня проблема.У меня есть контроллер View, откуда я вызываю level_1 моей игры.

GameViewController *level1 = [self.storyboard instantiateViewControllerWithIdentifier:@"GameIdentifier"];
[self.navigationController pushViewController:level1 animated:YES];

Он отлично работает.

... НО Я хочу сделать два разныхуровни (level_2 и level_3) с использованием одного и того же ViewController (GameViewController) (я буду называть их из того же класса), но я не знаю, как передать аргумент (например, int ) в GameViewController(этот аргумент будет текущим уровнем, например, 2 или 3).

1 Ответ

13 голосов
/ 24 декабря 2011

Вам необходимо добавить переменную экземпляра (и некоторые методы доступа для ее получения / установки) в ваш класс 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

Затем вам нужно передать номер уровня вашему контроллеру вида:

GameViewController *level1 = [self.storyboard instantiateViewControllerWithIdentifier:@"GameIdentifier"];
level1.level = 1;
[self.navigationController pushViewController:level1 animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...