1

我的应用程序中有一个splitView。我在splitview 的detailview 中单击按钮时显示了一个模态。在该模态中,我打开了包含splitview 的rootview 控制器(包含tableview)的弹出窗口。

现在我想关闭 popover 的 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];
    }

// 网格视图.m

从视图中呈现 DetailView (GridView)

-(IBAction)Grid_buttonPressed:(id)sender {

DetailView *rd=[[DetailView alloc]initWithNibName:@"DetailView" bundle:nil];
rd.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:rd animated:YES];
}

这个怎么做 ?谢谢。

4

3 回答 3

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];
于 2014-12-11T11:56:11.060 回答
0

您正在创建 DetailView 的新实例。d=[[DetailView alloc]init]尝试访问弹出框控制器并将其关闭。

于 2013-01-05T07:16:49.507 回答
0

通过编写DetailView *d=[[DetailView alloc]init]u 实例化 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];

 }
于 2013-01-05T07:20:44.033 回答