0

在 iOS 上,如何通过按钮关闭弹出框进入弹出框。我将 viewController 调用到弹出框中,但我无法关闭弹出框不会关闭。我该怎么做?请帮忙

4

3 回答 3

0

您可以在其顶部使用导航控制器和条形按钮。在导航控制器中插入第二个视图控制器。添加一个条形按钮项并将其操作引用到一个方法,该方法将在第一个视图控制器中关闭您的弹出控制器。也许您可以使用以下代码:

当您创建 UIPopoverController 时,我假设您已经UIPopoverConterollerDelegate在第一个视图控制器的 .h 文件中添加了该文件。

在您的第一个视图控制器的 .h 文件中声明 a UIPopoverController *popover;

在您创建弹出框控制器的地方编写以下代码。

-(IBAction)createPopoverController
{
    SecondViewController *secondViewController = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    UIBarButtonItem *dismissButton = [[UIBarButtonItem alloc] initWithTitle:@"Dismiss" style:UIBarButtonItemStyleBordered target:self action:@selector(dismissButtonPressed:)];

    [secondViewController.navigationItem setRightBarButtonItem:dismissButton];

    UINavigationController* navC = [[UINavigationController alloc] initWithRootViewController:secondViewController];
    popover = [[UIPopoverController alloc] initWithContentViewController:navC];
    popover.delegate = self;
    [popover setPopoverContentSize:CGSizeMake(secondViewController.view.frame.size.width, secondViewController.view.frame.size.height) animated:YES];
    [popover presentPopoverFromRect:yourButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
    [secondViewController release];
}

-(void)dismissButtonPressed:(id)sender
{
    [popover dismissPopoverAnimated:YES];
}

我希望它会帮助你。:)

于 2012-02-14T10:08:41.700 回答
0

只需使用这个:

- (void)dismissPopOver
{
    [self.popOver dismissPopoverAnimated:YES];
    self.popOver = nil;
}

并在按下按钮时调用该方法。

于 2012-02-13T20:52:42.427 回答
0

我通常最终不得不制作用作切换弹出框可见性的按钮。这就是我一直将它们连接起来的方式。我的按钮的操作如下所示:

- (void)popoverButtonTapped:(id)button
{
    if (self.popover != nil)
    {
        // If the popover is open, close it
        [self.popover dismissPopoverAnimated:YES];
        self.popover = nil;
    }
    else
    {
        // Otherwise, open a new popover
        self.popover = ...;
        // This is important because you want to know if the popover was closed
        // by tapping outside it or some external event
        self.popover.delegate = self;
    } 
}

- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    if (popoverController == self.popover)
    {
        // nil out our reference since the popover was dismissed
        self.popover = nil;
    }
}
于 2012-02-13T21:00:14.870 回答