如何在情节提要中从一个视图转到另一个视图

Posted

技术标签:

【中文标题】如何在情节提要中从一个视图转到另一个视图【英文标题】:How to go from one view to another view in storyboard 【发布时间】:2013-04-11 10:11:29 【问题描述】:

我创建的登录页面包括(用户名、密码和登录按钮)

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

这是我的代码:

#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;
    

但是没用!!!我只需要正确的用户名和密码进入下一页

【问题讨论】:

【参考方案1】:

您必须进行无触发转场才能执行此操作。从情节提要中进行无触发转场,并在您的用户名和密码正确时触发它。

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

然后调用方法[self performSegueWithIdentifier:@"Identifier" sender:nil]; 当你的条件为真时

【讨论】:

从情节提要中,不要在登录按钮上设置 segue。 FirstViewcontoller底部会有viewcontroller图标。从那里设置 segue 到另一个视图控制器【参考方案2】:

如果您想使用 segue,我认为您错过了在设置名称的行之后实际执行 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;
    

【讨论】:

我的朋友,这段代码是正确的,但是当我点击登录按钮错误的用户并通过下一页时 我不要这个!!!我想什么时候用正确的用户点击登录按钮并通过下一页继续 您必须将 performSegueWithIdentifier 行放在要转换到下一页的任何位置。【参考方案3】:

这里的 AuditViewController 是 segue 名称

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

[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;
    

【讨论】:

我的朋友我运行了这段代码,但是当我填写错误的用户并通过并点击登录按钮时仍然会进入下一页 是的,但同时您像正确的用户一样进行测试,然后导航,否则会发出警报 对不起我的朋友我很困惑 您可以在编辑部分看到代码。把它写在你的 .m 文件中。避免在 Edit 上方使用代码。 我在故事板中有两个视图将 segue(模态)连接在一起

以上是关于如何在情节提要中从一个视图转到另一个视图的主要内容,如果未能解决你的问题,请参考以下文章

从一个故事板转到另一个故事板?

如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图

如何在 swift 中从情节提要中的 didSelectRowAt indexPath 打开视图标签栏控制器?

将视图控制器从一个情节提要移动或复制到另一个情节提要

iOS - 如何将选项卡与情节提要中的特定视图控制器链接?

在 XCTest 测试中从情节提要加载的视图控制器中清空 UIView 快照(间歇性)