8

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

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

4

4 に答える 4

4

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

 aPopover.delegate = self;

コードを実行する場合。アプリがクラッシュします。代わりに、このようにする必要があります。

于 2010-05-02T14:12:33.460 に答える
2

私は持っている

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

なぜこれがあなたの場合にうまくいかないのかわかりません。

あなたifは少し厄介なので、あなたが思っているビューと話しているわけではないと思います。rootViewController.addCategoryPopover新しいコントローラーを作成したため、おそらく nil です。

于 2010-04-19T05:07:55.703 に答える
0

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

ご覧ください: MKMapView (SDK3.2) の UIPopoverController を使用して iPad で PopoverAnimated を閉じる方法。問題が解決したことを願っています。

于 2010-05-09T21:13:47.523 に答える