使用Storyboard Segues关闭弹出视图

3

我一直在谷歌和Stack Exchange上搜索正确的答案,但似乎找不到。我有一个通过弹出式segue呈现的弹出视图,当弹出视图内部的按钮被点击时,我希望它被关闭并显示一个UIAlert。以下是迄今为止我从其他答案中收集到的代码,但不起作用:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"popOverSegue"]) {
    if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) {
        UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue;
        self.myPopoverController = popoverSegue.popoverController;
    }
}
}


- (void)methodThatShouldCauseMyPopoverToCloseAnimated:(BOOL)animated
{
[self.myPopoverController dismissPopoverAnimated:animated];
NSLog(@"Dismissed");
}


-(IBAction)presentPopoverView:(id)sender {
if (!popOverViewIsShown){
    [self performSegueWithIdentifier:@"popOverSegue" sender:self];
    popOverViewIsShown = YES;
}else {
    [self methodThatShouldCauseMyPopoverToCloseAnimated:YES];
    popOverViewIsShown = NO;
}

}

- (IBAction)logoutMethod:(id)sender {

[self methodThatShouldCauseMyPopoverToCloseAnimated:YES];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Logout"
                                                message:@"Are you sure?"
                                               delegate:self
                                      cancelButtonTitle:@"Cancel"
                                      otherButtonTitles:@"OK", nil];
alert.tag = 0;
[alert show];

}

我怀疑当我调用methodThatShouldCauseMyPopoverToClose时,myPopoverController等于nil。 有什么建议吗?非常感谢! :)

1个回答

2

在你的prepareForSegue中以这种方式存储你的popover,然后设置一个断点来确保该方法正在触发。

self.myPopoverController = [(UIStoryboardPopoverSegue *)segue popoverController];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接