在我的应用中,我提出了一个模态视图。在模态视图中,我采用了一个视图(Extraview),其中包含一个表格视图和一个视图。一个按钮。
从这个按钮,我打开一个包含视图(LeftsideView)的popview。
-(IBAction)popOverBtnPressed:(id)sender
{
LeftSideVCViewController *popUp=[[LeftSideVCViewController alloc] initWithNibName:@"LeftSideVCViewController" bundle:nil];
popView = [[UIPopoverController alloc]initWithContentViewController:popUp];
popView.delegate =self;
[popView setPopoverContentSize:CGSizeMake(300, 700)];
[popView presentPopoverFromRect:CGRectMake(150,30,20,40) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
现在,我想在选择左侧视图的表行时忽略模态视图。 我该怎么做呢。
答案 0 :(得分:2)
在你的问题中呈现PopOver是一个不同的类,而dismiss方法是一个不同的类所以你需要像Bellow一样实现NSNotificationCenter
: -
在ViewDidLoad
方法中为您的PopOVer创建的类添加通知: -
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dismisPopoverInnerPageTeam:)
name:@"InnerPop"
object:nil];
[super viewDidLoad];
}
-(void)dismisPopoverInnerPageTeam:(NSNotification *)notification {
[yourPopOver dismissPopoverAnimated:YES];
}
现在您只需要通过LeftSideVCViewController
类UITableView Delegate
方法didSelectRowAtIndexPath
调用此方法,例如: -
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[[NSNotificationCenter defaultCenter] postNotificationName:@"InnerPop" object:self];
}
希望它能帮助你:)
答案 1 :(得分:0)
试试这个:
[popoverController dismissPopoverAnimated:YES];
答案 2 :(得分:0)
我解决了这个问题如下:
注册后通知。
你必须首先解雇popover&然后关闭所呈现的模态视图。
-(void)dismissModal:(NSNotification *)notification
{
[popView dismissPopoverAnimated:YES];
[self dismissViewControllerAnimated:YES completion:nil];
}