0

一个非常奇特的错误:

我有 BarButtonItem 弹出一个 UIPopoverController 像这样:

-(void) addNewProjectButtonClicked:(id)sender
{
    //Some Preparations....

    [popover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

正如预期的那样,弹出框控制器出现在正确的位置。

现在,我期待当我在弹出框外触摸任何地方时,它都会被解散。
好吧,唯一的问题是,当我再次点击 BarButton(弹出弹出框的那个)而不是像我期望的那样关闭旧按钮并呈现新按钮时,结果是现有弹出框之上的另一个弹出框。这意味着当我一次又一次地按下时,我会得到一堆弹出窗口,只有在其他地方多次点击才能消除这些弹出窗口。

我知道我可以在这里使用一些单例设计模式来解决这个问题,但是没有更简单的内置方法来处理它吗?

谢谢!

4

1 回答 1

2

几个月前我遇到了同样的问题,以为当我点击任何东西时它会自行消失,但事实并非如此。

我处理这个问题的方法是保留对旧弹出框的引用,并在UIBarButtonItem点击时将其关闭。

-(void) addNewProjectButtonClicked:(id)sender
{
    [popover dismissPopoverAnimated:YES];
    // Set it up again.
    [popover ...];
}

您可以使用属性来轻松管理内存,也可以自己处理。

于 2011-01-04T12:15:46.537 回答