通过iphone SDK中的popover表格行解除模态视图

时间:2013-01-09 06:44:33

标签: iphone ios objective-c xcode uipopovercontroller

在我的应用中,我提出了一个模态视图。在模态视图中,我采用了一个视图(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];

}

enter image description here enter image description here

现在,我想在选择左侧视图的表行时忽略模态视图。 我该怎么做呢。

3 个答案:

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

现在您只需要通过LeftSideVCViewControllerUITableView 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];


}