2014-12-03 1 views
0

Я создал приложение со следующим кодом. В котором, когда я нажимаю кнопку, выбор даты должен загружаться в соответствующей строке. Но datepicker всегда загружается в первую строку. Может ли кто-нибудь помочь мне сделать это?Происхождение вида внутри ячейки tableview показывает неправильный фрейм в ios

Мой код выглядит следующим образом:

- (void)datePickerButtonPressed:(UIButton *)sender 
{ 
if(self.datePicker == nil) 
{ 
    self.datePicker = [[UIDatePicker alloc] init]; 
    [self.datePicker addTarget:self action:@selector(datePickerDateChanged:) forControlEvents:UIControlEventValueChanged]; 
} 
NSMutableArray *items = [self.toolbar.items mutableCopy]; 
[items removeObjectAtIndex:2]; 
[items addObject:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(datePickerDone:)]]; 
[self.toolbar setItems:items animated:YES]; 

CGPoint swipepoint = sender.center; 
CGPoint rootViewPoint = [sender.superview convertPoint:swipepoint toView:self.goalDetailsTableview]; 
NSIndexPath *indexPath = [self.goalDetailsTableview indexPathForRowAtPoint:rootViewPoint]; 
NSLog(@"%@", indexPath); 
GoalDetailsTableViewCell *cell = [self.goalDetailsTableview cellForRowAtIndexPath:indexPath]; 
self.datePicker.datePickerMode = UIDatePickerModeDateAndTime; 

CGRect pickerRect = CGRectMake(cell.actionCardReminder.frame.origin.x, cell.actionCardReminder.frame.origin.y, 304, 204); 
NSLog(@"%f %f", cell.actionCardReminder.frame.origin.x, cell.actionCardReminder.frame.origin.y); 
self.datePicker.frame = pickerRect; 
self.datePicker.backgroundColor = [UIColor whiteColor]; 
self.datePicker.layer.cornerRadius = 5; 

[self.goalDetailsTableview addSubview:self.datePicker]; 
} 

Спасибо заранее.

+0

Что показывают ваши два журнала? – rdelmar

+1

Попробуйте это 'pickerRect.origin.y = rootViewPoint.y' и проверьте – Akhilrajtr

+0

@rdelmar - мой журнал показывает x происхождение в 8 и y изначально, как 18, и datepicker показывает только в первой ячейке, но мой я хочу то же самое происхождение для выбранной ячейки –

ответ

1

Вопрос может быть из-за y позиции pickerRect.

Попробуйте

CGRect pickerRect = CGRectMake(cell.actionCardReminder.frame.origin.x, rootViewPoint.y, 304, 204); 

В коде cell.actionCardReminder.frame относятся к раме внутри cell. Таким образом, позиция y также будет точкой внутри кадра cell. Поэтому он всегда будет отображаться из первого ряда. Обновление y решит проблему.

Смежные вопросы