【问题标题】:Dismissing iPad UIPopoverController from within its content controller从其内容控制器中关闭 iPad UIPopoverController
【发布时间】:2011-02-09 06:00:34
【问题描述】:

所以我有一个带有按钮的弹出框。当按下该按钮时,我希望弹出框消失。这似乎很容易,但我无法为我的生活弄清楚。我用来显示弹出框的代码如下:

    AddCategoryViewController* content = [[AddCategoryViewController alloc] init];
 UIPopoverController* aPopover = [[UIPopoverController alloc]
          initWithContentViewController:content];
 aPopover.delegate = self;
 [content release];

 // Store the popover in a custom property for later use.
 self.addCategoryPopover = aPopover;
 [aPopover release];
 [addCategoryPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

在 addcategoryviewcontroller 中,我有:

    -(IBAction)saveAddCategory:(id)sender {
 if (rootViewController == nil)
  rootViewController = [[RootViewController alloc] init];

 [rootViewController.addCategoryPopover dismissPopoverAnimated:YES];
 [rootViewController dismissPopover];
}

Rootviewcontroller 是从中创建弹出框的地方。不幸的是,这些方法都不能消除它。有什么帮助吗?

【问题讨论】:

    标签: ipad uipopovercontroller popover


    【解决方案1】:

    您会在此行看到警告。

     aPopover.delegate = self;
    

    如果你会执行你的代码。该应用程序将崩溃。相反,您需要像this 那样做。

    【讨论】:

    • 请注意,苹果不鼓励使用按钮来简单地关闭弹出窗口。
    【解决方案2】:

    我有

    - (void)viewWillDisappear:(BOOL)anAnimated
    {
        [self.dPopover dismissPopoverAnimated: NO];
        self.dPopover = nil;
        [super viewWillDisappear: anAnimated];
    }
    

    并且不明白为什么这在您的情况下不起作用。

    你的if 有点令人不安,所以我猜你并没有在谈论你认为的观点。 rootViewController.addCategoryPopover 可能是 nil,因为你创建了一个新控制器。

    【讨论】:

    • 我做了那个“如果”声明几乎是出于绝望,因为没有什么对我有用。我曾经尝试过 [rootViewController.addCategoryPopover dismissPopoverAnimated:YES];作为该函数中的代码。然而,这也不起作用。
    • 你没有解决我隐含的问题——rootViewController.addCategoryPopover 的值是什么?
    【解决方案3】:

    我想我用解决方案回答了一个类似的问题,我曾经用从MKMapView 加载的UIView 来消除弹出窗口。 我的解决方案的使用与加载弹出框的任何其他视图基本相同。

    看看: How to dismissPopoverAnimated on iPad with UIPopoverController in MKMapView (SDK3.2)。希望能解决你的问题。

    【讨论】:

      【解决方案4】:

      使用 NSNotificationCenter 来 DissmissPoperController Fro Father viewControll

      【讨论】:

      • 父视图控制器不是父视图控制器。也可以使用块或委托或 KVO 或任何他想要的。
      猜你喜欢
      • 1970-01-01
      • 2012-04-10
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 2015-03-30
      • 1970-01-01
      相关资源
      最近更新 更多