我创建了一个新的UIViewController类,包括xcode 6中的xib文件。 我设置了所有类似的东西
.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];
当我通过调试器运行它时,{。1}}在.h文件中设置但是当我想要访问gameID
方法中的值时,我viewDidLoad
获取0
而不是gameID
答案 0 :(得分:1)
您的代码看起来非常好&它应该像预期的那样工作a.k.a应该rint" -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;
}
在.h
文件&中声明此方法然后使用此方法创建NextViewController
的新实例,并将gameID
作为参数传递。
请注意,您的代码本身是正确的。我在Mac&它工作正常。
答案 1 :(得分:0)
我认为在设置GameID之前,viewDidLoad会受到影响。尝试在viewDidLoad和nextViewController.gameID = -1上设置断点;看谁先被击中。如果是这种情况,您可以覆盖gameID的setter来执行基于它的逻辑。