如何将变量的值传递给iphone中的子视图?

时间:2010-02-10 18:03:13

标签: iphone objective-c

我是iphone开发的新手。我正在创建管RSS源。在第一个表视图中,我在每个单元格中显示标题,发布的数据和图像。所有这些内容都是通过XML解析从XML页面中检索的。我还解析并检索了要显示的描述并将其存储在一个可变数组中。单击一行,它导航到另一个表视图,我将详细显示所有内容(标题,日期,摘要)。我想在两个视图中使用相同的可变数组。如何实现它?或者我应该在子视图中再次解析XML文件以显示所有内容。请指导我。谢谢。

3 个答案:

答案 0 :(得分:2)

<强>被修改

您可能希望覆盖详细视图控制器上的initWithNibName方法。

 // The designated initializer.  Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil withMutableArray: (NSMutableArray *) theArray withAnotherArray: (NSMutableArray *) theOtherArray{
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        // Here you should declare a local variable with the property & synthesize to store the array that is being passed
        myLocalArray = theArray;
        myOtherLocalArray = theOtherArray;
    }
    return self;
}

请记住在.h文件中声明此方法,以便前一个控制器知道它存在。

祝你好运。

答案 1 :(得分:1)

您可以创建第二个视图的子类,添加一些实例变量,并在创建要推送的视图时设置它们。传递您已经为第一个表视图解析的任何内容,然后传递您尚未拥有的任何信息,只需在第二个视图中再次解析。

或者,您可以使用Core Data并传递托管对象上下文,为整个应用程序提供持久数据后备存储。不过,这可能需要更多工作。

答案 2 :(得分:0)

如果您有一个调用的按钮:

PickerViewController *pvController = [[PickerViewController alloc] init];
pvController.hidesBottomBarWhenPushed = YES;
pvController.BrillianMustache = BrilliantMustache;
pvController.passedVariable = BrilliantMustache.varToPass;
[self.navigationController pushViewController:pvController animated:YES];
[pvController release];Initialize the variable in the receiving view.

然后你必须有BrilliantMustache(在这种情况下是核心数据实例),并且在接收视图(pvController)中创建并合成了passPickerVariable。

然后在vewDidLoad

- (void)viewDidLoad {
    NSLog(@"%@",self.passedVariable);
}