Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.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 行动单导致iPad上出现多个UIPopover_Objective C_Ios_Ios Universal App - Fatal编程技术网

Objective c 行动单导致iPad上出现多个UIPopover

Objective c 行动单导致iPad上出现多个UIPopover,objective-c,ios,ios-universal-app,Objective C,Ios,Ios Universal App,我有一个通用的应用程序,有一个带有几个按钮的行动表。当我点击add按钮(navigationItem.right)时,我希望它显示在popoever中。它正确地做到了这一点,但是,当操作表绑定到barbutton项时,它允许我不断地点击add按钮,并有更多的弹出窗口 我以为在爆米花外面敲一下会让这个 - (IBAction)ShowItemAdd:(id)sender { addActionSheet = [[UIActionSheet alloc] initWithTitle:nil

我有一个通用的应用程序,有一个带有几个按钮的行动表。当我点击add按钮(navigationItem.right)时,我希望它显示在popoever中。它正确地做到了这一点,但是,当操作表绑定到barbutton项时,它允许我不断地点击add按钮,并有更多的弹出窗口

我以为在爆米花外面敲一下会让这个

- (IBAction)ShowItemAdd:(id)sender
{
    addActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:[dataObj.preferences objectForKey:@"appts_name"], @"Reserve", nil];
    if ([[UIDevice currentDevice] isPad]) {
        [addActionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
    } else {
        [addActionSheet showInView:self.view];
    }
}
如果我将它绑定到barbutton项,为什么它不会自动解除

编辑

点击顶部navigationItem栏(蓝色栏)中的任何位置都不会关闭操作表,但点击导航控制器外部将关闭操作表

- (IBAction)ShowItemAdd:(id)sender
{
    if ([addActionSheet isVisible]) {

        [addActionSheet dismissWithClickedButtonIndex:[addActionSheet cancelButtonIndex] animated:YES];

    } else {

        addActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:[dataObj.preferences objectForKey:@"appts_name"], @"Reserve", nil];
        if ([[UIDevice currentDevice] isPad]) {
            [addActionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
        } else {
            [addActionSheet showInView:self.view];
        }
    }
}

在您的方法中,您应该首先检查您的操作表是否已可见,如果已可见,请将其取消,而不是创建新的操作表

- (IBAction)ShowItemAdd:(id)sender
{
    if ([addActionSheet isVisible]) {

        [addActionSheet dismissWithClickedButtonIndex:[addActionSheet cancelButtonIndex] animated:YES];

    } else {

        addActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:[dataObj.preferences objectForKey:@"appts_name"], @"Reserve", nil];
        if ([[UIDevice currentDevice] isPad]) {
            [addActionSheet showFromBarButtonItem:[[self navigationItem] rightBarButtonItem] animated:YES];
        } else {
            [addActionSheet showInView:self.view];
        }
    }
}

isVisible总是返回false;viewController上是否有用于存储对操作表的引用的属性?尝试将
addActionSheet
更改为
self.addActionSheet
我确实有addActionSheet作为属性。我将其更改为
self.addActionSheet
,但仍然是一样的。很抱歉,我在重新启动addActionSheet后看到了。我把它移到顶部,它就工作了。谢谢