3

我一直在谷歌搜索并在整个堆栈交换中搜索正确的答案,但我似乎找不到它。我所拥有的是通过弹出框 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。有什么建议么?太感谢了!:)

4

1 回答 1

2

像这样将弹出窗口存储在您的 prepareForSegue 中,然后放置一个断点以确保该方法正在触发。

self.myPopoverController = [(UIStoryboardPopoverSegue *)segue popoverController];
于 2013-09-28T02:48:11.337 回答