質問

だから、ボタンが入ったポップオーバーがあります。そのボタンが押されたら、ポップオーバーが消えたいです。簡単に思えますが、私の人生のためにそれを理解することはできません。私がポップオーバーを表示するために使用するコードは以下にあります。

    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は、ポップオーバーが作成されている場所です。残念ながら、これらの方法はどちらもそれを却下するものではありません。何か助けがありますか?

役に立ちましたか?

解決

この行で警告が表示されます。

 aPopover.delegate = self;

コードを実行する場合。アプリはクラッシュします。代わりに、あなたはそれをする必要があります これ.

他のヒント

私は持っています

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

そして、なぜあなたの場合にこれが機能しないのかわからない。

あなたの if 少し厄介なので、私の推測では、あなたはあなたがそうだと思う見解に話しかけていません。 rootViewController.addCategoryPopover 新しいコントローラーを作ったので、おそらくゼロです。

私は、ポップオーバーを却下するために使用した解決策と同様の質問に答えたと思います UIView aからロードされました MKMapView. 。私のソリューションの使用は、基本的にポップオーバーをロードする他のビューと同じです。

見て:mkmapview(sdk3.2)のuipopovercontrollerを使用してiPadでpopoverAnimatedを解雇する方法(SDK3.2). 。それがあなたの問題を解決したことを願っています。

nsnotificationCenterを使用して、ViewControllの父親からPoperControllerを解散します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top