Индексное изображение выбранной вкладки действует как неактивное, когда 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];

}
Другие вопросы по тегам