У меня есть UIPopover, что я создал несколько UITextFields программно. Если одно из полей UIText использовано, я хочу, чтобы UIDatePicker внутри точки UIPopoverController указывал на поле UIText, которое вызывало краны. Я могу получить тег, поэтому я знаю, какой CGRect вызвал кран; проблема в том, что я не могу заставить стрелку UIPopoverController указывать на этот конкретный прямоугольник.Как подключить UIPopover к CGRect, созданному программно
Вот код (INview: self.frame неверен, это только одна из вещей, которые я пробовал)
if(textField.tag == 1301 ) { // 'startTime' text field
UIViewController* popoverContent = [[UIViewController alloc] init]; //ViewController
UIView *popoverView = [[UIView alloc] init]; //view
popoverView.backgroundColor = [UIColor blackColor];
UIDatePicker *datePicker=[[UIDatePicker alloc]init];//Date picker
datePicker.frame=CGRectMake(0,44,180,186); // 180,186
datePicker.datePickerMode = UIDatePickerModeTime;
[datePicker setMinuteInterval:15];
[datePicker setTag:1310];
[datePicker addTarget:self action:@selector(Result) forControlEvents:UIControlEventValueChanged];
[popoverView addSubview:datePicker];
popoverContent.view = popoverView;
innerPopoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
[innerPopoverController setPopoverContentSize:CGSizeMake(180,206) animated:NO];
[innerPopoverController presentPopoverFromRect:CGRectMake(305, -190, 80, 35) // WRONG! TODO
inView:self.frame
permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
CGRectMake имеет те же параметры (х, у, ш, ч), что UITextfield было создано с помощью. Ошибка, которую я получаю:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIPopoverController presentPopoverFromRect:inView:permittedArrowDirections:animated:]: Popovers cannot be presented from a view which does not have a window.'
Возможно ли это, имея UIPopover внутри UIPopover?
Pass 'self.view' для' INview: 'параметра (предполагая, что 'self' является контроллером представления. Также требуется, чтобы' self.view' уже отображался при представлении popover. Прочитайте ошибку. Это означает, что представление еще не было добавлено (представлено). – rmaddy
Ошибка сборки : Свойство 'view' не найдено на объекте типа 'SubViewData *' (SubViewData - это контроллер вида, где первый U IPopover) – SpokaneDude
Вам нужно передать 'UIView' в параметр' inView'. Это должен быть вид, с которого вы хотите отобразить popover. Параметр 'rect' должен относиться к этому виду. – rmaddy