我使用“presentPopoverFromBarButtonItem”显示一个弹出框——之后,当我单击右侧导航栏按钮中的另一个栏按钮项时,弹出框不会关闭。
但是当我点击其他地方时关闭弹出窗口。当我们使用“presentPopoverFromRect:inView:”来显示弹出框时,问题也不存在——奇怪吗?
由于我们没有从 UIBarButtonItem 获取框架,我如何才能从 barbutton 正确显示弹出框。
谢谢,
我使用“presentPopoverFromBarButtonItem”显示一个弹出框——之后,当我单击右侧导航栏按钮中的另一个栏按钮项时,弹出框不会关闭。
但是当我点击其他地方时关闭弹出窗口。当我们使用“presentPopoverFromRect:inView:”来显示弹出框时,问题也不存在——奇怪吗?
由于我们没有从 UIBarButtonItem 获取框架,我如何才能从 barbutton 正确显示弹出框。
谢谢,
回答我自己的问题以帮助某人,
// Presenting from BarButton will not dismiss popover when we click on other bar button.
// [self.popoverController presentPopoverFromBarButtonItem:self.barButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
NSMutableArray* buttons = [[NSMutableArray alloc] init];
for (UIView *subview in self.navigationController.navigationBar.subviews) {
if ([subview isKindOfClass:[UIControl class]]) {
[buttons addObject:subview];
}
}
UIView *view = [buttons objectAtIndex:1]; // The '1' is the index to your bar item in the array of .items
CGRect barButtonFrame = [self.navigationController.navigationBar convertRect:view.frame toView:self.navigationController.view];
[self.popoverController presentPopoverFromRect:barButtonFrame inView:self.navigationController.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
我上面所做的是找到条形按钮的框架并显示弹出框“presentPopoverFromRect”。
我不知道,无论你是否在 popover 控制器中使用了 nib 或 xib,但让我们试试下面的代码
if (_Popover != nil) {
[_Popover dismissPopoverAnimated:YES];
}
else {
[_Popover dismissPopoverAnimated:NO];
}