2014-12-12 4 views
0

Я создал новый класс UIViewController включая XIb файл в Xcode 6. я создал все, как такне может передать значение к следующему UIViewController

файл .h следующий ViewController

@interface NextViewController : UIViewController 

@property (nonatomic,assign) int gameID; 

@end 

.m следующий файл ViewController

@synthesize gameID; 

.m файл предыдущий View Controller

NextViewController *nextViewController = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil]; 
nextViewController.gameID = -1; 
[self.navigationController pushViewController:nextViewController animated:YES]; 

, когда я побежал через отладчиком gameID устанавливается в .h файле, но когда я хочу, чтобы получить доступ к значению в методе viewDidLoad я получаю 0 для gameID вместо -1

+0

'[nextViewController setGameID: -1]'? – JAL

+0

@ Явный синтаксис точки - это просто синтаксический сахар для этого. Это то же самое. – Abizern

ответ

1

Ваш код кажется совершенно точным & он должен работать так, как ожидается, a.k.a следует установить «-1» в -(void) viewDidLoad. Другой подход, который я могу думать о том, чтобы попытаться с наиважнейшей -init метод, как следующие:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withGameId:(int)gameIdParam { 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     self.gameID = gameIdParam; 
    } 
    return self; 
} 

Declare этот метод в файле .h & затем использовать этот метод, чтобы создать новый экземпляр вашего NextViewController с прохождением gameID в качестве параметра.

Обратите внимание, что ваш код сам по себе правильный. Я попробовал это на Mac &, он отлично работает.

+1

Я не знаю почему это не сработало, я использовал один и тот же метод в одном проекте, и он работает! но переопределение метода -init работало ... спасибо! – Markus

0

Я думаю, что viewDidLoad становится нажмите перед установкой GameID. Попробуйте установить точку останова на viewDidLoad и на nextViewController.gameID = -1; чтобы увидеть, какой из них попадает первым. Вы можете переопределить setter для gameID, чтобы выполнить логику, основанную на этом, если это так.

+0

они вызываются так, как только я хочу сначала nextViewController.gameID = -1, а затем в файл nextViewController .h, где я вижу, что он установлен правильно, и после этого вызывается метод viewDidLoad ... – Markus