通过popover didselcet关闭模态视图

时间:2013-01-05 07:06:01

标签: iphone objective-c ios xcode presentmodalviewcontroller

我的应用程序中有一个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];
}

怎么做? 感谢。

3 个答案:

答案 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];