У меня проблемы с UIPickerView. Я планирую создать контроллер представления, который позволит пользователю указать день следующего дня. PickerView должен отображать такие строки, как «ср, 1 декабря», «чт, 2 декабря» и т. д.
Проблема в том, что PickerView пуст (PickerView не отображает ни одной строки). Несмотря на делегаты, методы возвращают необходимое количество строк и сами строки.
Изображение пустого PickerView — LINK
Ниже приведен мой код.
.h
@interface OMSDatePickerViewController : UIViewController
@property (nonatomic ) NSInteger amountOfDays;
@property (nonatomic ) CGFloat cellHeight;
@end
.m
#import "OMSDatePickerViewController.h"
@interface OMSDatePickerViewController () {
NSMutableArray * dateForChoose;
NSInteger datePickerActiveIdx;
UIPickerView *dPicker;
}
@end
- (void)viewDidLoad
{
NSLog(@"viewDidLoad");
[super viewDidLoad];
// Do any additional setup after loading the view.
dateForChoose = [[NSMutableArray alloc] init];
dPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(5, 5, 200, 150)];
[self.view setFrame: CGRectMake(xPos, yPos, WIN_WIDTH, WIN_HEIGHT)];
[self.view setAlpha:1.0];
[self.view setBackgroundColor:[UIColor grayColor]];
[[self.view layer] setCornerRadius:5.0f];
[[self.view layer] setBorderWidth:2.0f];
[[self.view layer] setMasksToBounds:YES];
[self.view setContentMode:UIViewContentModeScaleToFill];
// Creating the list of dates
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"EEE',' dd MMM";
[dateForChoose removeAllObjects];
// Add some data for demo purposes.
NSDate *curDate = [NSDate date];
NSString *str;
for (NSInteger i = 0; i< amountOfDays; i++, curDate = [curDate dateByAddingTimeInterval:60*60*24]) {
str = [df stringFromDate:curDate];
[dateForChoose addObject:str];
}
[dPicker setDataSource: self];
[dPicker setDelegate: self];
dPicker.showsSelectionIndicator = YES;
[self.view addSubview:dPicker];
datePickerActiveIdx = 0;
NSLog(@"%@", dPicker);
}
и методы делегирования
// Number of components.
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
// Total rows in our component.
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
NSLog(@"numberOfRowsInComponent: %d", [dateForChoose count]);
return [dateForChoose count];
}
// Display each row's data.
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
NSString *str = [dateForChoose objectAtIndex: row];
NSLog(@"%@", [dateForChoose objectAtIndex: row]);
return [dateForChoose objectAtIndex: row];
}
// Do something with the selected row.
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"You selected this [%2d, %2d]: %@", row, component, [dateForChoose objectAtIndex: row]);
NSLog(@"count - %d", [dateForChoose count]);
datePickerActiveIdx = row;
}
Интересные вещи, когда я пытаюсь повернуть колесо, вызывается "didSelectRow", который всегда возвращает строку == 0 и показывает:
[55215:c07] Вы выбрали это [ 0, 0]: Ср, 4 декабря.
[55215:c07] count - 4
Любой идеи?
Дополнение: тот же код хорошо работает, если его скопировать в реализацию внутренней функции какого-нибудь UIViewController. Например, это обработчик событий кнопки и код вызывается при нажатии на эту кнопку.
ЧТО ЭТО???*
PS: журнал работы
[18241:907] viewDidLoad
[18241:907]
[18241:907] viewWillAppear
[18241:907] numberOfRowsInComponent: 4
[18241:907] numberOfRowsInComponent: 4
[18241:907] Wed, 04 Dec
[18241:907] Thu, 05 Dec
[18241:907] Fri, 06 Dec
[18241:907] Sat, 07 Dec
[18241:907] viewDidAppear
Подробнее здесь: https://stackoverflow.com/questions/203 ... gates-work
IOS, UIPickerView создает программно, пустое представление, делегаты работают ⇐ IOS
Программируем под IOS
1771366344
Anonymous
У меня проблемы с UIPickerView. Я планирую создать контроллер представления, который позволит пользователю указать день следующего дня. PickerView должен отображать такие строки, как «ср, 1 декабря», «чт, 2 декабря» и т. д.
Проблема в том, что PickerView пуст (PickerView не отображает ни одной строки). Несмотря на делегаты, методы возвращают необходимое количество строк и сами строки.
Изображение пустого PickerView — LINK
Ниже приведен мой код.
.h
@interface OMSDatePickerViewController : UIViewController
@property (nonatomic ) NSInteger amountOfDays;
@property (nonatomic ) CGFloat cellHeight;
@end
.m
#import "OMSDatePickerViewController.h"
@interface OMSDatePickerViewController () {
NSMutableArray * dateForChoose;
NSInteger datePickerActiveIdx;
UIPickerView *dPicker;
}
@end
- (void)viewDidLoad
{
NSLog(@"viewDidLoad");
[super viewDidLoad];
// Do any additional setup after loading the view.
dateForChoose = [[NSMutableArray alloc] init];
dPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(5, 5, 200, 150)];
[self.view setFrame: CGRectMake(xPos, yPos, WIN_WIDTH, WIN_HEIGHT)];
[self.view setAlpha:1.0];
[self.view setBackgroundColor:[UIColor grayColor]];
[[self.view layer] setCornerRadius:5.0f];
[[self.view layer] setBorderWidth:2.0f];
[[self.view layer] setMasksToBounds:YES];
[self.view setContentMode:UIViewContentModeScaleToFill];
// Creating the list of dates
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"EEE',' dd MMM";
[dateForChoose removeAllObjects];
// Add some data for demo purposes.
NSDate *curDate = [NSDate date];
NSString *str;
for (NSInteger i = 0; i< amountOfDays; i++, curDate = [curDate dateByAddingTimeInterval:60*60*24]) {
str = [df stringFromDate:curDate];
[dateForChoose addObject:str];
}
[dPicker setDataSource: self];
[dPicker setDelegate: self];
dPicker.showsSelectionIndicator = YES;
[self.view addSubview:dPicker];
datePickerActiveIdx = 0;
NSLog(@"%@", dPicker);
}
и методы делегирования
// Number of components.
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 1;
}
// Total rows in our component.
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
NSLog(@"numberOfRowsInComponent: %d", [dateForChoose count]);
return [dateForChoose count];
}
// Display each row's data.
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
NSString *str = [dateForChoose objectAtIndex: row];
NSLog(@"%@", [dateForChoose objectAtIndex: row]);
return [dateForChoose objectAtIndex: row];
}
// Do something with the selected row.
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
NSLog(@"You selected this [%2d, %2d]: %@", row, component, [dateForChoose objectAtIndex: row]);
NSLog(@"count - %d", [dateForChoose count]);
datePickerActiveIdx = row;
}
Интересные вещи, когда я пытаюсь повернуть колесо, вызывается "didSelectRow", который всегда возвращает строку == 0 и показывает:
[55215:c07] Вы выбрали это [ 0, 0]: Ср, 4 декабря.
[55215:c07] count - 4
[b]Любой идеи?[/b]
Дополнение: тот же код хорошо работает, если его скопировать в реализацию внутренней функции какого-нибудь UIViewController. Например, это обработчик событий кнопки и код вызывается при нажатии на эту кнопку.
[b]ЧТО ЭТО???[/b]*
PS: журнал работы
[18241:907] viewDidLoad
[18241:907]
[18241:907] viewWillAppear
[18241:907] numberOfRowsInComponent: 4
[18241:907] numberOfRowsInComponent: 4
[18241:907] Wed, 04 Dec
[18241:907] Thu, 05 Dec
[18241:907] Fri, 06 Dec
[18241:907] Sat, 07 Dec
[18241:907] viewDidAppear
Подробнее здесь: [url]https://stackoverflow.com/questions/20365628/ios-uipickerview-create-programmatically-empty-view-delegates-work[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия