Objective c 行动单导致iPad上出现多个UIPopover
我有一个通用的应用程序,有一个带有几个按钮的行动表。当我点击add按钮(navigationItem.right)时,我希望它显示在popoever中。它正确地做到了这一点,但是,当操作表绑定到barbutton项时,它允许我不断地点击add按钮,并有更多的弹出窗口 我以为在爆米花外面敲一下会让这个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
- (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后看到了。我把它移到顶部,它就工作了。谢谢