Как установить строку, инициированную UIPickerView? - PullRequest
1 голос
/ 06 августа 2011

Я использую UIPickerView в своем приложении.Я использовал некоторые учебные пособия, чтобы выполнить настройки и получить выбранные данные от пользователя, и он работает нормально.

Что мне не совсем понятно, так это то, как сказать UIPickerView, когда он инициируется с данными(используя - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component), чтобы указать на определенное значение.

Чтобы быть более точным:

  • У меня есть UIPickerView, который содержит массив NSStrings
  • Как только пользователь выбирает значение, я получаю его и сохраняю его с помощью NSUserDefaults
  • Когда пользователь возвращается к UIViewController, который содержит UIPickerView, я хочу получить сохраненные данные из NSUserDefaults и указать UIPickerView на значение, которое там было сохранено.

Где мне написать код, который устанавливает эти данные?

Ответы [ 3 ]

4 голосов
/ 06 августа 2011

Вы бы написали это на ViewWillAppear: (потому что это когда вы хотите установить данные).

Там вы можете прочитать значение вашей модели (Core Data, NSUSerDefaults, Plist и т. Д.) И установить его с помощью:

- (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated

Это метод UIPickerView .

2 голосов
/ 30 июля 2013

У меня была такая же проблема некоторое время.Вот мое решение:

В viewDidLoad

[_picker selectRow:[[[NSUserDefaults standardUserDefaults]objectForKey:"objectname"]intValue] inComponent:0 animated:YES];

Это гарантирует, что вы перейдете к строке с этим объектом в нем.В значительной степени ответ выше с примером того, как указать строку вашего точного NSUserDefault.

0 голосов
/ 22 февраля 2017

Это прекрасно работает! Попытайся! rowNumberSelectedFirst, который я использовал в своем примере, - это просто переменная, в которой хранится номер строки, который вы хотите выбрать первым при загрузке UIPickerView.

Для swift 3 вы можете использовать это.

let rowNumberSelectedFirst: Int = 3
 pickerView.selectRow(rowNumberSelectedFirst, inComponent: 0, animated: true)

Для Objective-C Вы можете использовать это

int rowNumberSelectedFirst = 3; 
[picker selectRow:rowNumberSelectedFirst inComponent:0 animated:YES];
...