У меня есть UITableView
с UITableViewDelegate.
Один из CellTypes состоит из метки и UITextField
.
Я установил inputView
из UITextField
на UIPickerView
.
UIPickerView и его делегат создаются в функции cellForRowAtIndexPath
класса UITableViewDelegate
.
Когда я показываю свою таблицу, создаются таблицы, когда я нажимаю на UITextField, появляется средство выбора, однако средство выбора не заполняется, а журналы, которые я поместил в делегат, не отображаются.
До сих пор я пробовал несколько вещей, таких как добавление дополнительного обновления, но пока безрезультатно.
Поскольку журналы не отображаются, я подозреваю, что что-то не так со ссылкой на делегата и источник данных? Экземпляр PickerView где-то уничтожен? Может быть, я забыл реализовать метод, которого не вижу?
Любая помощь в понимании/исправлении этого приветствуется!
Скриншот:
В моем коде это выглядит так:
TableViewDelegate.m
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = nil;
cell = [self createListViewCell:indexPath tableView:tableView];
return cell;
}
- (UITableViewCell *) createListViewCell:(NSIndexPath *)indexPath tableView:(UITableView *)tableView {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:LIST_CELL_ID];
ListTableCell *listTableCell = (ListTableCell *) cell;
List *list = [listsData objectAtIndex:indexPath.row];
//Set List Label
listTableCell.listLabel.text = list.name;
//Create Value picker
UIPickerView *picker = [[UIPickerView alloc]init];
//Create Delegate for picker
ListPickerViewDelegate *pickerDelegate = [[ListPickerViewDelegate alloc]init];
pickerDelegate.data=list.itemData;
picker.dataSource = pickerDelegate;
picker.delegate = pickerDelegate;
listTableCell.listTextValue.inputView = picker;
[picker reloadAllComponents];
return cell;
}
И мой ListPickerViewDelegate выглядит так:
ListPickerViewDelegate.h
#import <UIKit/UIKit.h>
@interface ListPickerViewDelegate:NSObject <UIPickerViewDelegate,UIPickerViewDataSource>
@property (nonatomic) NSArray *data;
@property (nonatomic) UITextField *textField;
@end
ListPickerViewDelegate.m
#import "ListPickerViewDelegate.h"
#import "DataItem.h"
@implementation TagListPickerViewDelegate
@synthesize data;
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
DataItem *thisDataItem = [data objectAtIndex:row];
NSLog(@"Value for row is %@", thisDataItem.name ); //Log not showing
return DataItem.name;
}
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
NSLog(@"Count for data is %li", (unsigned long)[data count]); //Log not showing
return [data count];
}
@end