Индексное изображение выбранной вкладки действует как неактивное, когда UIPopoverPresentationController представлен в iOS
У меня есть дизайн, как показано ниже
Как вы можете видеть, я использую UIPopoverPresentationController, когда пользователь нажимает на вертикальное изображение из трех точек UITableViewCell. Ниже приведен мой код для отображения этого всплывающего окна представления контроллера.
- (void)showMoreOptionsRelatedToMediCard:(UITapGestureRecognizer *)tapRecognizer {
selectedMedItemRowIntValue = (int)tapRecognizer.view.tag;
MedItemPopOverViewController *medItemPopOverViewCont = viewControllerWithIdInStoryboard(medItemPopOverViewControllerId, MED_REMINDER_STORYBOARD);
medItemPopOverViewCont.modalPresentationStyle = UIModalPresentationPopover;
medItemPopOverViewCont.popoverPresentationController.delegate = self;
[self presentViewController:medItemPopOverViewCont animated:NO completion:nil];
UIPopoverPresentationController *popController = [medItemPopOverViewCont popoverPresentationController];
popController.permittedArrowDirections = UIPopoverArrowDirectionRight;
popController.delegate = self;
popController.sourceView = tapRecognizer.view;
popController.sourceRect = CGRectMake(30, 50, 10, 10);
}
Вопрос 1.
Почему при отображении всплывающего окна индексное изображение вкладки "Медикаменты" изменяется как не выбранное?
Как видно из выбранной вкладки, указатель заголовка подсвечивается, но не изображение. Поэтому я считаю, что это никак не связано со значением альфа в представленном контроллере представления. Но в любом случае я дал 1 в качестве альфа-значения для представленного представления.
Вопрос 2.
Когда я нажимаю где-то еще, кроме всплывающего окна, я получаю следующее предупреждение в области отладки в XCode, даже всплывающее окно отклонено.
[Предупреждение] <_UIPopoverBackgroundVisualEffectView 0x117931ed0> запрашивается для анимации его непрозрачности. Это приведет к нарушению эффекта до тех пор, пока непрозрачность не вернется к 1.
Вопрос 3
Как вы можете видеть на изображении, которое я загрузил, я использую табличное представление внутри моего всплывающего окна. Когда пользователь нажимает на любую ячейку в этой таблице, я вызываю следующий код, чтобы отклонить всплывающее окно внутри метода didSelectRowAtIndexPath
[self dismissViewControllerAnimated:NO completion:nil];
Это правильный способ отклонения представленного представления. Потому что он фактически отклоняет представленное представление, но в итоге получил тот же результат, который я упомянул в первом вопросе, а именно то, что индексное изображение вкладки не выделено.
Я считаю, что все эти три вопроса имеют связь. Вот почему я ставлю их в один вопрос.
1 ответ
Попробуйте ссылку ниже, это может быть полезно для вас https://www.invasivecode.com/weblog/uipopoverpresentationcontroller-uisearchcontroller.
Для вопроса 1. добавление строки ниже в классе вкладок
[[UITabBar appearance] setTintColor:[UIColor colorWithRed:redColor]];//Add your color here
Вопрос 2.
- (void)showMoreOptionsRelatedToMediCard:(UITapGestureRecognizer *)tapRecognizer {
selectedMedItemRowIntValue = (int)tapRecognizer.view.tag;
MedItemPopOverViewController *medItemPopOverViewCont = viewControllerWithIdInStoryboard(medItemPopOverViewControllerId, MED_REMINDER_STORYBOARD);
medItemPopOverViewCont.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *popController = [medItemPopOverViewCont popoverPresentationController];
popController.sourceRect = CGRectMake(30, 50, 10, 10);
popController.sourceView = tapRecognizer.view;
popController.permittedArrowDirections = UIPopoverArrowDirectionRight;
popController.delegate = self;
[self presentViewController: medItemPopOverViewCont animated:YES completion:nil];
}