我的设计如下
正如您所看到的,当用户点击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问题中。
答案 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];
}