我尝试使用以下示例中概述的明显方法,但我在已加载视图中的viewDidLoad上传递的变量( rootcategory )仍然是 nil 。
这是我的代码:
CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:[NSBundle mainBundle]];
self.categoryViewController.rootCategory = @"433";
self.categoryViewController = viewController;
[viewController release];
我在标题中合成了一个属性,如下所示:
@property (nonatomic, readwrite) NSString *rootCategory;
答案 0 :(得分:3)
您正在分配viewController,并在将它分配给viewController之前尝试更改self.categoryViewController。
CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:[NSBundle mainBundle]];
viewController.rootCategory = @"433";
self.categoryViewController = viewController;
[viewController release];
应该有用。
答案 1 :(得分:0)
您的CategoryViewController的头文件是什么样的?您是否将rootCategory定义为属性?它是合成的还是你自己写的setter和getter?
答案 2 :(得分:0)
我相信在viewDidLoad
返回之前会在新实例上调用initWithNibName:
,因此您需要在调用后设置属性。
答案 3 :(得分:0)
您的代码是正确的,但在设置属性之前调用viewDidLoad
(如iKenndac指出的那样)。
您应该使用- (void)viewWillAppear:(BOOL)animated
方法。正如方法名称所示,这是在视图出现在屏幕上之前调用的。