Настройка:
PickerView (spinSelector) и метка (selectedItem) добавлены в ViewController.
Созданы отдельные файлы классов делегатов (SpinDelegate m & h) для делегата PickerView.
Создан экземпляр делегата (SpinDelegate * mySpinDelegate)
Назначенное свойство делегата для экземпляра делегата
ViewController.h
@interface ViewController : UIViewController
{
SpinDelegate *mySpinDelegate;
}
@property (nonatomic, weak) IBOutlet UILabel *chosenItem;
@property (nonatomic, strong) IBOutlet UIPickerView *spinSelector;
ViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
mySpinDelegate=[[SpinDelegate alloc]init];
self.spinSelector.delegate=mySpinDelegate;
self.spinSelector.dataSource=mySpinDelegate;
}
SpinDelegate.h
@interface SpinDelegate : UIViewController <UIPickerViewDataSource, UIPickerViewDelegate>
{
ChoiceData *choiceItems;
}
@end
SpinDelegate.m
#pragma mark - PickerView Delegate
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component{
return [choiceItems.choiceList objectAtIndex:row];
}
Далее следует использовать метод:
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component;
Это часть протокола UIPickerViewDelegate
. Используя это, просто измените UILabel (selectedItem) в ViewController
на значение строки. Что-то вроде "Выбранный элемент% i", строка
Я прочитал и просмотрел тонну постов и вопросов по сообщениям от UIViewController
до UIViewController
и посмотрел протокол / делегат, singleton, NSNotificationCenter
... мне просто кажется, что есть синтаксис Мне не хватает адреса родителя / супер? ViewController
создал экземпляр делегата, разве делегат не имеет области действия?
Пожалуйста, расскажите мне об этом. :)