首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Xcode序列图像板不满足条件取消推流

Xcode序列图像板不满足条件取消推流
EN

Stack Overflow用户
提问于 2012-01-28 17:39:17
回答 3查看 10K关注 0票数 15

我在导航视图控件中有一个带按钮的序列图像板,这个控件中也有文本字段,它使用序列图像板segue push。但是,我进行了一些输入检查,如果有任何文本字段为空,我会提醒用户。

我可以这样做,但它会提醒用户,然后切换到另一个视图。

如果按钮按下的方法中不满足if条件,有没有办法取消这个push

注意:此推送是由故事板接口创建的,而不是由代码创建的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-22 13:00:40

下面的代码也可以用于不同类型的segues,如推、展开等。从故事板中命名段,并使用此处给出的代码。如果不希望执行特定的段,则为该条件返回NO,默认情况下返回YES。此方法应该在源代码视图控制器中。

代码语言:javascript
复制
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender {
    if ([identifier isEqualToString:@"Segue_Name"]) {
        NSLog(@"Segue Blocked");
        //Put your validation code here and return YES or NO as needed
        return NO;
    }

    return YES;
}
票数 28
EN

Stack Overflow用户

发布于 2012-01-28 23:18:54

不要通过从按钮拖动到目标控制器来创建分段。相反,只需从源控制器拖动到目标控制器即可创建一个段。单击分段并使用属性检查器指定分段为推,并为分段指定标识符(goToDestination)。然后将该按钮连接到源代码视图控制器中的IBAction。在IBAction方法中执行检查,如果您想执行推送,请添加以下代码行:

代码语言:javascript
复制
[self performSegueWithIdentifier: @"goToDestination" sender: self];
票数 33
EN

Stack Overflow用户

发布于 2015-11-19 15:04:40

如果buttonAction是必须在单击按钮时执行的方法,则必须调用它内部的两个方法1.检查条件的方法2.控制段的方法

代码语言:javascript
复制
 - (IBAction)buttonAction:(id)sender
     {
     [self validateEnteredData];
     [self shouldPerformSegueWithIdentifier:kSegueName sender:sender];
     }

您的验证方法如下所示

代码语言:javascript
复制
-(void)validateEnteredData
 {
if (self.usernameTextField.text.length==0 && self.passwordTextField.text.length==0)
{
    UIAlertView * alert=[[UIAlertView alloc]initWithTitle:kError message:kInvalidationMessage delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
    [alert show];
    return;
}
else if (![self.usernameTextField.text isEqualToString:@"admin"] && ![self.passwordTextField.text isEqualToString:@"pass"])
{
    UIAlertView * alert=[[UIAlertView alloc]initWithTitle:kError message:kLoginFailed delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
    [alert show];
    return;
}
}

并且segue可以由以下代码段控制

代码语言:javascript
复制
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{
if ([identifier isEqualToString:kSegueName])
{
//Validation: Return NO if you don't want to execute the segue action        
    if (self.usernameTextField.text.length==0 && self.passwordTextField.text.length==0)
    {
        return NO;
    }
    else if (![self.usernameTextField.text isEqualToString:@"admin"] && ![self.passwordTextField.text isEqualToString:@"pass"])
    {
        return NO;
    }
 }

  return YES;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9044265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档