У меня есть представление PopoverController, которое позволяет пользователю загружать файл. При нажатии на кнопку, просмотр popOver будет расширяться по размеру, отображать статус загрузки, а главный контроллер просмотра будет скрыт скрытым видом «обложки», который был добавлен в свойство «passThroughViews» PopoverController, чтобы пользователь не мог случайно уволить во время загрузки файла.Как добавить представление панели навигации в PassThroughViews PopOver?
Моя проблема заключается в том, что в раскадровки мой основной viewController встроен в навигационный контроллер. Похоже, что я не могу охватить панель навигационного контроллера с видом в раскадровке, и если пользователь нажимает в любом месте на панели навигации, то popover исчезнет, и пользователь потеряет индикатор выполнения загрузки.
Как сокрыть панель навигации с помощью «обложки», или как добавить вид навигационной панели в свой passThroughViews popOverController?
Открытие поповер от главного ViewController:
- (IBAction)openDataOptionsPopOver:(id)sender
{
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
PopOverViewController *optionsWindow = [storyboard instantiateViewControllerWithIdentifier:@"dataOptions"];
self.popUp = [[UIPopoverController alloc] initWithContentViewController:optionsWindow];
[self.popUp setDelegate:self];
[nextNavButton setEnabled:NO]; //Disabling barButtonItem on the navigationController
optionsWindow.containerPopOver = self.popUp; //Pointer to the popover, to resize it later.
optionsWindow.coverView = self.coverView; //Pointer to the coverView, to (un)hide later
[popUp presentPopoverFromRect:[sender frame] inView:[sender superview] permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
Установка свойства passThroughViews внутри в PopoverViewController:
//Expands the popOver on press of "refreshFileButton" to display progressView
-(void) explodeWindow
{
//setting self.navigationController.view and ...visibleViewController.view here didn't seem to work ...
[containerPopOver setPassthroughViews:[NSArray arrayWithObjects:coverView, nil]];
[containerPopOver setPopoverContentSize:CGSizeMake(600, 400) animated:YES];
[titleBarItem setTitle:@"Downloading File. Please Wait ..."];
[refreshFileButton setHidden:YES];
[progressView setHidden:NO];
[downloadLabel setHidden:NO];
[coverView setHidden:NO];
[progressView setProgress:0.0 animated:NO];
}
Я попытался добавить self.navigationController.view к passThroughViews без успеха - на самом деле оказывается нулевым указателем. И я не могу представить UIView на любом уровне в раскадровках, которые будут охватывать все мои элементы управления, не заслоняя popOver. Что мне здесь не хватает? И спасибо за чтение.
Редактировать: Как указывает Аглая ниже, реализация следующего и избежания passThroughViews, вероятно, является лучшим способом сделать это.
- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
//Don't dismiss our popover when the view covering our controls is present
if([coverView isHidden]){
return YES;
}else{
return NO;
}
}
Использование 'popoverControllerShouldDismissPopover', вероятно, является лучшим методом для достижения того, что Я пытаюсь это сделать. Хотя, я все еще задаюсь вопросом, есть ли способ добавить отображение навигационной панели в «passThroughViews». – Erracity