загрузить данные в uipickerview с NSMutableArray, расположенным в делегате приложения - PullRequest
0 голосов
/ 31 октября 2011

В основном я проанализировал некоторые данные из XML в NSMutableArray, который используется совместно в appDelegate.

в моем 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 ]

1 голос
/ 31 октября 2011

Это обычная модель.Вы захотите получить доступ к экземпляру sharedApplication UIApplication.Таким образом, предполагая, что ваш класс appDelegate называется YourAppDelegate, массив ivar в YourAppDelegate и viewController равен titleDB, вы можете сделать это в методе viewDontLoad вашего viewController

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

Удачи

0 голосов
/ 31 октября 2011

По сути, вы хотите получить доступ к объекту appDelegate из случайных мест в коде.Это не необычный запрос.Помните, что Objective C является надмножеством языка C.И как таковой, вы можете использовать глобальную переменную.Какая более естественная переменная будет в программе Какао, чем делегат приложения, по причинам, указанным выше.Итак, в вашем файле appDelegate .h добавьте:

<MyAppDelegateClass> * appDelegate;

Замените MyAppDelegateClass на имя вашего класса appDelegate.Затем просто включите файл .h вашего appDelegate везде, где вы хотите использовать переменную appDelegate, и просто используйте (в вашем примере):

[appDelegate titleDB]

или создайте локальный iVar:

NSMutableArray * titleDB = [appDelegate titleDBData];

Затем в методе делегата приложения didFinishLaunchingWithOptions добавьте следующую строку:

appDelegate = self;
...