我的应用程序中有一个splitView。我在splitview的detailview上点击按钮时显示了一个模态。在该模态中,我打开了包含splitview的rootview控制器(包含tableview)的popover。
现在我想忽略popSe的tableview的didSelect上的模态视图。但是它没有被忽略。 我已经搜索了很多并尝试了,但无法得到任何解决方案。
我的尝试代码如下:
//DetailView (Presented ModalView).m
-(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,5,20,40) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
}
-(void)dismissModal
{
[self dismissViewControllerAnimated:YES completion:nil];
}
// LeftSideView.m
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
DetailView *d=[[DetailView alloc]init];
[d dismissModal];
}
// GridView.m
从视图中呈现DetailView(GridView)
-(IBAction)Grid_buttonPressed:(id)sender {
DetailView *rd=[[DetailView alloc]initWithNibName:@"DetailView" bundle:nil];
rd.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:rd animated:YES];
}
怎么做? 感谢。
答案 0 :(得分:0)
您正在创建DetailView d=[[DetailView alloc]init]
的新实例。尝试访问弹出控制器并将其关闭。
答案 1 :(得分:0)
通过编写DetailView *d=[[DetailView alloc]init]
来实例化DetailView的另一个实例。
在这种情况下的出路是为LeftSideView创建一个委托
上面某处:
DetailView *instanceDV = [DetailView new];
LeftSideView *instanceLSV = [LeftSideView new];
instanceLSV.delegate = instanceDV;
然后:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if([self.delegate respondsToSelector:@selector(dismissModal)])
[self.delegate dismissModal];
}
答案 2 :(得分:0)
这是一种解除通过其主弹出模式呈现的UISplitViewController的方法。不确定这是否是确切的问题,但可能对某些人有帮助。 从主视图本身(弹出视图):
//get the detail view
MyDetailViewClass *detailView = (MyDetailViewClass *)[[self.splitViewController.viewControllers lastObject] topViewController];
//dismiss the master popover
[detailView.masterPopoverController dismissPopoverAnimated:YES];
//dismiss the whole view
[detailView.navigationController dismissViewControllerAnimated:YES completion:nil];