在 iOS 上,如何通过按钮关闭弹出框进入弹出框。我将 viewController 调用到弹出框中,但我无法关闭弹出框不会关闭。我该怎么做?请帮忙
问问题
5628 次
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 回答