0

我目前正在学习 iPhone 应用程序开发,并制作了一些在线教程来了解这一切是如何工作的。

我现在已经习惯了 Objective-C 的概念,我正在尝试基于两个视图构建第一个应用程序:

第一个视图将是“登录视图”,只是带有一种登录系统:一个登录字段和一个密码字段,以及一个“连接”按钮。

第二个视图是应用程序的“主页视图”,登录后会调用该视图。

我做了一个 push segue 来建立登录视图和登录后调用的视图之间的关系。这是故事板的样子:

登录系统故事板

我实际上不知道的是如何调用一个函数来检查凭据是否正确,如果登录成功则切换到另一个视图。

谁能给我解释一下,或者给我一些提示/教程吗?

以下是我的 LoginController 的来源:

登录控制器.h

@interface LoginController : UIViewController {
    IBOutlet UITextField *TFLogin;
    IBOutlet UITextField *TFPassword;
}

@property (strong, nonatomic) IBOutlet UITextField *TFLogin;
@property (strong, nonatomic) IBOutlet UITextField *TFPassword;

- (IBAction)Connect:(UIButton *)sender;


@end

登录控制器.m

@implementation LoginController

@synthesize TFLogin;
@synthesize TFPassword;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

- (IBAction)Connect:(UIButton *)sender
{
    if ([TFLogin.text isEqualToString:@"myLogin"] && [TFPassword.text isEqualToString:@"myPassword"]) {
        [self performSegueWithIdentifier:@"LoginSegue" sender:sender];
        NSLog(@"Connection OK");
    }
    else {
        NSLog(@"Connection Not OK");
    }
}

@end

谢谢 !

4

1 回答 1

1

您有两种选择来触发 segue。最简单的方法就是在界面生成器中按住 ctrl 并从按钮拖动到下一个视图控制器。您也可以在代码中(在 IBAction 中)通过调用performSegueWithIdentifier:sender:.

如果您使用 IBAction,您可以在那里验证数据。

如果您使用界面构建器方法,则无法验证——prepareForSegue:sender:为时已晚。无论如何,这里有一个可能的绊脚石——我记得,UINavigationController不会转发prepareForSegue:sender:给它的孩子。您可以通过在类别上UINavigationController或通过子类化来缓解这种情况。

于 2012-04-06T09:48:38.617 回答