如何使用UINavigationController在视图之间传递数据

时间:2009-01-13 10:35:44

标签: cocoa-touch

我尝试使用以下示例中概述的明显方法,但我在已加载视图中的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;

4 个答案:

答案 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方法。正如方法名称所示,这是在视图出现在屏幕上之前调用的。