当用户点击UIButton时,我想在弹出框控制器中显示自定义菜单。然后我想呈现另一个菜单,当用户按下另一个按钮时使用完全相同的方法。
我的问题是这样的:当用户按下第一个按钮时,弹出窗口会显示我的菜单,这没关系。但是当他按下第二个按钮,而不是解雇第一个弹出窗口,然后用第二个菜单呈现第二个按钮时,我的应用程序就解除了第一个弹出窗口。然后当用户按下第二个按钮时,出现第二个弹出框。因此,用户必须按两次才能看到第二个菜单。
以下是我创建菜单和popover的方法:
CascadeMenuViewController *cascadeMenuViewController = [[CascadeMenuViewController alloc] initWithNibName:@"CascadeMenuViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:cascadeMenuViewController];
[cascadeMenuViewController release];
navigationController.navigationBar.barStyle = UIBarStyleBlack;
_popoverMenuView = [[UIPopoverController alloc] initWithContentViewController:navigationController];
[navigationController release];
[_popoverMenuView presentPopoverFromRect:_currentlyTouchedButtonView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
当用户从popover中的菜单中选择sthg时,以下是我解除popover的方法:
if (_popoverMenuView) {
[_popoverMenuView dismissPopoverAnimated:YES];
[_popoverMenuView release];
_popoverMenuView = nil;
}
你能告诉我我做错了吗?
提前......
答案 0 :(得分:0)
发生的事情如下:
当显示弹出窗口时,它外面的每个点击只会使弹出窗口被解除,并且不会被转发到其他视图;
您可以使用passthroughViews
覆盖此机制,passthroughViews
是一个视图列表,可以获取转发给他们的点按;
必须注意的是,当转发发生时(即,你点击{{1}}中的一个视图),弹出窗口不会自动被解除;所以,在你的情况下,你将不得不自己解雇,当点击按钮时,你将打开第二个弹出窗口。
显示时,弹出窗口外部的水龙头会自动解除弹出窗口。要允许用户与指定视图交互而不关闭弹出框,可以将一个或多个视图分配给passthroughViews属性。弹出窗口内的点击不会自动导致弹出窗口被解除。您的视图和视图控制器代码必须显式处理popover中的操作和事件,并根据需要调用dismissPopoverAnimated:方法。