弹出窗口视图在被关闭后显示/为什么两个 segue 同时被触发

发布于 2025-01-06 18:06:14 字数 1644 浏览 4 评论 0原文

我是 xcode 新手,我一直遇到这个问题,但我不知道如何解决它。我的问题是我的 UIViewController 结合了弹出框转场、自定义转场和导航控制器。
用户单击文本框,就会出现弹出窗口,他们可以从弹出窗口中选择一个城市,然后弹出窗口就会消失。但是,如果他们单击执行自定义转场方式的按钮,弹出窗口会再次显示。

有什么办法可以阻止流行音乐再次发射吗?

我的代码是这样的

@interface ….
{
    UIPopoverController *popoverController; 
}
@property (strong) UIPopoverController *popoverController;

@end
@implementation …

@synthesize popoverController;


…
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
    return YES;
}

-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    self.popoverController = nil;
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    UIStoryboardPopoverSegue *storePopeOver;
    UIPopoverController *thePopover;
    UIViewController *ContentVC;

    if(self.popoverController)
    {
        [self.popoverController dismissPopoverAnimated:NO];
        self.popoverController = nil;
    }
    //Popover 
    if([segue.identifier isEqualToString:@"FindFrom"])
    {

        storePopeOver =(UIStoryboardPopoverSegue *)segue;
        thePopover = [storePopeOver popoverController];
        self.popoverController = thePopover;
        [segue.destinationViewController setDelegate:self];
        self.segueTyp = @"FROM";  

    }
//Custom segue
if([segue.identifier isEqualToString:@"TimeTable"])
    {
        [segue.destinationViewController setDelegate:self];
    }
}

//When the user clicks on the  textField performDegue
- (IBAction)FromTxtFieldBeginEdit:(UITextField *)sender {
    [self performSegueWithIdentifier:@"FindFlightsFrom" sender:self];
}

}

I am new to xcode and I have been running to this problem and I am not sure how to fix it. My Issue is I have UIViewController that has a combination of popover segue, custom segue and a navigation controller.
The user clicks on a text box and the pop over shows up, and they are able to select a city form the pop over and the pop over is dismissed. But if they click on a button that performs the custom segue way the pop up shows up again.

Is there any way I could stop the pop from firing again?

Here is how my code is

@interface ….
{
    UIPopoverController *popoverController; 
}
@property (strong) UIPopoverController *popoverController;

@end
@implementation …

@synthesize popoverController;


…
-(BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
    return YES;
}

-(void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
{
    self.popoverController = nil;
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    UIStoryboardPopoverSegue *storePopeOver;
    UIPopoverController *thePopover;
    UIViewController *ContentVC;

    if(self.popoverController)
    {
        [self.popoverController dismissPopoverAnimated:NO];
        self.popoverController = nil;
    }
    //Popover 
    if([segue.identifier isEqualToString:@"FindFrom"])
    {

        storePopeOver =(UIStoryboardPopoverSegue *)segue;
        thePopover = [storePopeOver popoverController];
        self.popoverController = thePopover;
        [segue.destinationViewController setDelegate:self];
        self.segueTyp = @"FROM";  

    }
//Custom segue
if([segue.identifier isEqualToString:@"TimeTable"])
    {
        [segue.destinationViewController setDelegate:self];
    }
}

//When the user clicks on the  textField performDegue
- (IBAction)FromTxtFieldBeginEdit:(UITextField *)sender {
    [self performSegueWithIdentifier:@"FindFlightsFrom" sender:self];
}

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

巾帼英雄 2025-01-13 18:06:14

当你创建segues时,你是否按住Ctrl键并从按钮上拖动?
我喜欢从 VC 中拖动,这样它们就不会被自动调用,并且您必须调用 PerformSegueWithIdentifier 才能发生 Segue。

When you created the segues did you Ctrl+drag from the button?
I like to drag from the VC, that way they are neer called automatically and you have to call performSegueWithIdentifier for a segue to happen.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文