如何从故事板中的一个视图转到另一个视图

时间:2013-04-11 10:11:29

标签: ios objective-c storyboard

我创建了登录页面include(用户名和密码以及登录按钮)

我想在何时填写文本字段用户名和密码,如果正确的用户和密码在另一页上,如果错误则给我一个提醒。

这是我的代码:

#import "Detail.h"

@implementation ViewController
{
    NSString *name;
}
@synthesize Username,Password;

- (void)viewDidLoad
{
    [super viewDidLoad];
}


- (IBAction)Login:(id)sender {

    NSString *a = [[NSString alloc]initWithFormat:@"http://192.168.1.102/mamal/login.php?u=%@&p=%@",Username.text,Password.text];
    NSString *url = [[NSString alloc]initWithContentsOfURL:[NSURL URLWithString:a]];
    NSLog(@"%@",url);
    if ([url isEqualToString:@"0"]) //this is wrong user & password
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"ERROR" message:@"WRONG" delegate:nil cancelButtonTitle:@"Dissmis" otherButtonTitles: nil];
        [alert show];
    }
    else
    {
        name = @"Mohammad";
    }
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([name isEqualToString:@"Mohammad"] , [[segue identifier] isEqualToString:@"Segue"]) {
        Detail *det = segue.destinationViewController;
    }
}

但是很有效!我只想要合适的用户和密码转到下一页

3 个答案:

答案 0 :(得分:3)

您必须使无触发segue执行此操作。从故事板中进行无触发的segue,并在用户名和密码正确时触发它。

要创建无触发segue,请从场景底部的场景底座中的包含视图控制器图标开始控制+拖动segue。像往常一样拖动到目标场景,然后选择segue类型。选择segue,然后在检查器中选择segue标识符。

然后调用方法[self performSegueWithIdentifier:@“Identifier”sender:nil]; 当你的条件成立时

答案 1 :(得分:0)

如果你想使用segues我认为你错过了在你设置名字的行之后实际执行segue的调用

name = @"Mohammed"        
[self performSegueWithIdentifier:@"mySegue" sender:self]

将“mySegue”作为故事板中segue的标识符。

然后,您可能希望将新的View Controller命名为。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"mySegue"]) {
        Detail *det = segue.destinationViewController;
        det.name = name;
    }
}

答案 2 :(得分:0)

此处AuditViewController是segue name

你需要在故事板中调用这样的类

[self performSegueWithIdentifier:@"AuditViewController" sender:self];

修改

检查条件

- (IBAction)Login:(id)sender {

    NSString *a = [[NSString alloc]initWithFormat:@"http://192.168.1.102/mamal/login.php?u=%@&p=%@",Username.text,Password.text];
    NSString *url = [[NSString alloc]initWithContentsOfURL:[NSURL URLWithString:a]];
    NSLog(@"%@",url);
    if ([url isEqualToString:@"0"]) //this is wrong user & password
    {
        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"ERROR" message:@"WRONG" delegate:nil cancelButtonTitle:@"Dissmis" otherButtonTitles: nil];
        [alert show];
    }
    else
    {
        name = @"Mohammad";
        if([name isEqualToString:@"Mohammad"])
            [self performSegueWithIdentifier:@"Segue" sender:self];
        //else
            //NSLog(@"Can not Login");
    }
}

prepareForSegue 方法调用

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"Segue"]) 
    {
        Detail *det = segue.destinationViewController;
    }
}