我使用 - “presentPopoverFromBarButtonItem”显示一个弹出框 - 之后当我点击右侧导航栏按钮中的另一个条形按钮项时,弹出框不会被忽略。
但是当我点击其他地方时,忽略了弹出窗口。 当我们使用 - “presentPopoverFromRect:inView:”显示popover时,问题就出现了 - 奇怪吗?。
因为我们没有从UIBarButtonItem获取帧如何从barbutton正确显示弹出窗口。
感谢,
答案 0 :(得分:1)
回答我自己的问题来帮助某人,
// 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];
我上面所做的是找到bar按钮的框架并显示popover“presentPopoverFromRect”。
答案 1 :(得分:0)
我不,你是否在弹出控制器中使用了nib或xib,但让我们尝试下面的代码
if (_Popover != nil) {
[_Popover dismissPopoverAnimated:YES];
}
else {
[_Popover dismissPopoverAnimated:NO];
}