使用位于app delegate中的NSMutableArray将数据加载到uipickerview中

时间:2011-10-30 23:35:13

标签: iphone xml parsing uipickerview

基本上我已经将XML中的一些数据解析为appDelegate中共享的NSMutableArray。

在我的secondViewController中,我有一个uiPickerView,我想将数组的细节加载到其中。

我的问题是......怎么样?

之前我曾经简单地使用过uiPickerView,并且必须首先加载数据以便像这样分配给uiPickerView:

titleDB = [[NSMutableArray alloc] init];
[titleDB addObject:@"MR"];
[titleDB addObject:@"Mrs"];
[titleDB addObject:@"Ms"];
[titleDB addObject:@"Miss"];
[titleDB addObject:@"DR"];
[titlePickerView selectRow:1 inComponent:0 animated:YES];

但由于数据来自appDelegate,我不知道如何将其加载到uiPickerview中,是否与数据源有关?

我要求向我抛出代码我只是想要找到最好的方法。

对此的任何帮助都很棒

由于 Jonn4y

2 个答案:

答案 0 :(得分:1)

这是一种常见的模式。您将需要访问UIApplication的sharedApplication实例。因此,假设您的appDelegate类名为YourAppDelegate,YourAppDelegate和viewController中的数组ivar是titleDB,那么您可以在viewController的viewDidLoad方法中执行此操作

YourAppDelegate *appDelegate=(YourAppDelegate *)[[UIApplication sharedApplication] delegate];
// assuming you are using @property and @synthesize for your ivars
self.titleDB=appDelegate.titleDB;
祝你好运

答案 1 :(得分:0)

基本上,您希望从代码中的随机位置访问appDelegate对象。这不是一个不寻常的要求。请记住,Objective C是C语言的超集。因此,您可以使用全局变量。由于上述原因,Cocoa程序中的自然变量将比应用程序委托更多。因此,在您的appDelegate .h文件中,添加:

<MyAppDelegateClass> * appDelegate;

将MyAppDelegateClass替换为appDelegate类名的名称。然后在您想要使用appDelegate变量的任何地方包含您的appDelegate的.h文件,并使用(在您的示例中):

[appDelegate titleDB]

或创建本地iVar:

NSMutableArray * titleDB = [appDelegate titleDBData];

然后在你的app委托方法didFinishLaunchingWithOptions中,添加以下行:

appDelegate = self;