如何在情节提要中从一个视图转到另一个视图
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 中从一个视图导航到另一个视图