Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何正确显示两个连续的超控器?_Objective C_Ipad_Uipopovercontroller - Fatal编程技术网

Objective c 如何正确显示两个连续的超控器?

Objective c 如何正确显示两个连续的超控器?,objective-c,ipad,uipopovercontroller,Objective C,Ipad,Uipopovercontroller,当用户点击UIButton时,我想在popover控制器中显示一个自定义菜单。然后我想展示另一个菜单,当用户按下另一个按钮时使用完全相同的方法 我的问题是:当用户按下第一个按钮时,弹出窗口就会出现在我的菜单中,这没关系。但是,当他按下第二个按钮时,我的应用程序并没有关闭第一个弹出框,而是用第二个菜单显示第二个弹出框,而是关闭了第一个弹出框。然后,当用户按下第二个按钮时,就会出现第二个弹出窗口。因此,用户必须按两次才能看到第二个菜单 以下是我如何创建菜单和弹出框: CascadeMenuViewC

当用户点击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];
if (_popoverMenuView) {
    [_popoverMenuView dismissPopoverAnimated:YES];
    [_popoverMenuView release];
    _popoverMenuView = nil;
}
以下是当用户从popover内的菜单中选择sthg时,我如何关闭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];
if (_popoverMenuView) {
    [_popoverMenuView dismissPopoverAnimated:YES];
    [_popoverMenuView release];
    _popoverMenuView = nil;
}
你能告诉我我做错了什么吗


Thx提前…

发生的情况如下:

  • 当弹出窗口显示时,其外部的每次点击都将使弹出窗口被取消,而不会转发到其他视图

  • 您可以通过使用
    passthroughview
    覆盖此机制,这是一个视图列表,可将点击转发给它们

  • 必须注意的是,当转发发生时(即,点击
    passthroughview
    中的一个视图),弹出窗口不会自动关闭;因此,在您的情况下,您必须自行关闭,当点击按钮时,您将打开第二个弹出窗口

  • 从:

    显示时,点击popover窗口外会导致popover自动关闭。要允许用户与指定的视图交互,并且不关闭popover,可以将一个或多个视图指定给passthroughViews属性。在popover窗口内轻敲不会自动导致popover被解除。视图和视图控制器代码必须显式处理popover内的操作和事件,并根据需要调用DismissPopoOveranimated:方法


    当用户点击第二个按钮时,您是否会取消第一个popover?或者你是如何尝试并关闭它的?当用户从弹出窗口中选择一个菜单项时,我将取消它。我的意思是,从上面的代码开始,它以if(_popoverMenuView)…开始,然后当用户按下第二个按钮时,我正在创建一个新的UIPopoverController并将其分配给_popover,就像用户按下第一个按钮时一样。(上面的第一段代码)耶!这就是解决办法。在alloc初始化之后,我给出了我的第一个和第二个按钮视图数组作为popover的passthroughview。然后,我在每次按下按钮和用户从弹出框内的菜单中选择sthg时都取消了它。瑟吉奥!