弹出窗口视图在被关闭后显示/为什么两个 segue 同时被触发
我是 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 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
当你创建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.