基本上我已经将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
答案 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;