在Xcode中按下按钮时如何进入相同的视图控制器?

时间:2014-09-03 10:43:26

标签: ios objective-c alert viewcontroller

我正在开发一个登录应用程序,我有一些疑问。如果按下登录按钮,该文本字段中的任何文本都应显示在下一个视图控制器中 - 如用户名和密码。所以我使用segues将值带到下一个视图控制器。

如果两个文本字段值均为空,然后按登录按钮,则显示警报以填充两个文本字段。在警报中按下OK按钮时,程序AUTOMATICALLY进入第二个控制器。当按下按钮时,我不知道如何使用相同的视图控制器。请帮助我。

我的代码:

   -(void)prepareForSegue:(UIStoryboardSegue )segue sender:(id)sender
{ 
    second *transferViewController = [segue destinationViewController];
    if ([txt1.text isEqualToString:@"" || txt2.text isEqualToString:@"" ]) 
    { 
      UIAlertView * mes=[[UIAlertView alloc] initWithTitle:@"Hello World!!!!!!" message:@"This is the Iphone app" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
      [mes show]; 
    } 
} 

4 个答案:

答案 0 :(得分:0)

有很多不同的方法可以做到这一点。其中一个更好的方法是使用未附加到动作的segue连接故事板中的两个场景。之后,您可以以编程方式触发视图控制器中的segue。执行此操作的方法是通过控制 - 从故事板场景底部的文件所有者图标拖动到目标场景。

将出现一个弹出窗口,询问“手动搜索”中的选项;选择“推”作为类型。点击小方块,确保您在属性检查器中。给它一个标识符,用于在代码中引用它。接下来,您将使用按钮触发segue(或者您可以使用AlertView委托)。它有像“buttonAction”这样的选择器。这是按下按钮时将调用的函数。此函数用于触发segue并转到目标场景。所以这个按钮的void()方法在该方法中并像这样调用segue:

-(void)buttonAction:(id)sender{
 if(textfield.text.length!=0){
    [self performSegueWithIdentifier:@"MySegueName" sender:sender];
  }
 else{
     alert!!
   }
}

答案 1 :(得分:0)

不需要prepareForSegue

 -(void)prepareForSegue:(UIStoryboardSegue )segue sender:(id)sender

  { second *transferViewController = [segue destinationViewController]; 

    }

将您的功能更改为IBAction方法

  -(IBAction)login:(id)sender
  {

     if ([txt1.text isEqualToString:@"" || txt2.text isEqualToString:@"" ]) 
     { 
       UIAlertView *mes=[[UIAlertView alloc] initWithTitle:@"Empty Fields !!!" message:@"enter the user details" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil]; 
     [mes show];

    }

   else

    {

        // both textfield are filled and validated
          [self performSegueWithIdentifier:@"your segue name of secondVC" sender:sender]; 
        }
     }

答案 2 :(得分:0)

试试这个......

- (IBAction)loginButtonPressed:(UIButton *)sender
{
    if ([txt1.text isEqualToString:@"" || txt2.text isEqualToString:@"" ])
    {
        UIAlertView * mes=[[UIAlertView alloc] initWithTitle:@"Hello World!!!!!!" message:@"This is the Iphone app" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [mes show];
    }
    else
    {
        [self performSegueWithIdentifier:@"yoursegueID" sender:nil]; // 
    }

}



- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 
{

    if (buttonIndex == 0)
    {
        [self performSegueWithIdentifier:@"yoursegueID" sender:nil];
    }
}

还设置UIAlertViewDelegate

@interface YourViewController : UIViewController <UIAlertViewDelegate> //in which you used `UIAlertView`

答案 3 :(得分:0)

我建议实现方法shouldPerformSegueWithIdentifier:此方法返回一个BOOL,指示segue是否应继续 -

-(BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
{ 

  BOOL ret=YES:

  if ([txt1.text isEqualToString:@"" || txt2.text isEqualToString:@"" ]) 
  { 
    UIAlertView * mes=[[UIAlertView alloc] initWithTitle:@"Hello World!!!!!!" message:@"This is the Iphone app" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles: nil];
    [mes show]; 
    ret=NO;
  } 

  return ret;
}