2

我有一个从一个屏幕映射到下一个屏幕的 segue。第一个屏幕总是转到第二页。但是我想确保如果执行了某些代码(例如验证检查正常),segue 只会进入第二页。这样可以设置吗?

谢谢!

4

3 回答 3

3
-(IBAction)add:(id)sender {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    dispatch_sync(dispatch_get_main_queue(), ^{ 
        [[CMPopupManager sharedObject] showWaitingPopup];    
    });

    sleep(3);

    dispatch_sync(dispatch_get_main_queue(), ^{ 
        [[CMPopupManager sharedObject] closeWaitingPopup];
        [self performSegueWithIdentifier:@"addCarSegue" sender:self];       
    }); 
});
}

(并且使用 Storyboard 不是从您的按钮而是从视图控制器拖动一个 segue 动作)

于 2012-11-25T15:40:34.420 回答
1

只有在某个 BOOL 为 YES 的情况下,你才能让你继续进行转换。有一个全局变量(根据您的需要,可能是全局的,可能只是在那个范围内。取决于您的来源)BOOL 变量,初始化为 NO。一旦验证OK,将其更改为YES。

将调用下一个视图控制器的函数使用(不记得确切的格式)嵌套在一个if(verificationOK) { }

这样,即使到达该代码,它也不会进入 if 语句,除非 verifyOK 变量已更改为 YES。

编辑 阅读您的评论后,您可以简单地以编程方式触发 segue。将您的 IBAction 连接到一个函数,比方说changeView

-(IBAction) changeView:(id) sender {
    if(verificationOk) {
        [self performSegueWithIdentifier:@"SeguesIdentifier" sender:nil];
    }
 }

您可以在此处阅读有关 segue的更多信息

于 2012-08-08T16:43:02.760 回答
1

就个人而言,我建议确保禁用该按钮,直到字段以通过验证规则的方式进行更改。因此,随着这些字段的变化,执行验证,一旦满足验证规则就启用 segue 按钮。

如果您的验证很复杂(例如,需要一些服务器往返),则从按钮中删除 segue,将您的按钮连接到IBOutlet验证的地方,并在成功后转换/切换到下一个场景。

于 2012-08-08T16:49:21.407 回答