当UIPopoverPresentationController在iOS中呈现时,选定的选项卡索引图像将处于非活动状态

时间:2017-09-04 05:06:24

标签: ios objective-c uipopoverpresentationcontroller

我的设计如下

enter image description here

正如您所看到的,当用户点击UITableViewCell垂直三点图像时,我使用 UIPopoverPresentationController 。以下是我的代码,用于显示弹出的演示视图控制器。

- (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。

为什么在弹出窗口时,“药物”选项卡索引图像的更改未选中?

如您所见,所选标签索引标题突出显示但不是图像。因为我相信,这与呈现的视图控制器中的Alpha值无关。但无论如何,我已经将1作为呈现视图的alpha值。

问题2。

当我点击弹出窗口以外的其他位置时,我会在Xcode的调试区域中收到以下警告,甚至弹出已被解除。

  

[警告]< _UIPopoverBackgroundVisualEffectView 0x117931ed0>正在   要求动画不透明度。这将导致效果出现   破坏,直到不透明度返回到1。

问题3。

正如您在我上传的图片中看到的那样,我在浏览视图中使用了表格视图。当用户点击该表中的任何单元格时,我会调用以下代码来解除内部 didSelectRowAtIndexPath 方法中的弹出

[self dismissViewControllerAnimated:NO completion:nil];

这是解雇所呈现视图的正确方法吗?因为,它实际上忽略了所呈现的视图,但结果与我在第一个问题中提到的结果相同,即标签索引图像未突出显示。

我相信所有这三个问题都有联系。这就是为什么我把它们放在一个SO问题中。

1 个答案:

答案 0 :(得分:0)

尝试以下链接,它可能对您https://www.invasivecode.com/weblog/uipopoverpresentationcontroller-uisearchcontroller有用。

问题1.在tabbar类中添加以下行

 [[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];

}