1

私は xcode 初心者ですが、ここに私が探しているものと、私が行ったことを示します。ログインを作成し、そのログインusernameFieldを使用して、ユーザーを確認し、その人に固有のWebページのみを開こうとしています。ログインは機能しています ここにすべてのコードがあります

//LoginViewController.h


    #import <UIKit/UIKit.h>
    @interface LoginViewController : UIViewController
    {
    IBOutlet UITextField *usernameField;
    IBOutlet UITextField *passwordField;
    IBOutlet UIButton *loginButton;   
    IBOutlet UIActivityIndicatorView *loginIndicator;
    }

    @property(nonatomic, strong) UITextField *usernameField;
    @property(nonatomic, strong) UITextField *passwordField;
    @property(nonatomic, strong) UIButton    *loginButton;
    @property(nonatomic, strong) UIActivityIndicatorView *loginIndicator;

    -(IBAction) login: (id) sender;
    @end


//LoginViewController.m


    #import "LoginViewController.h"
    @implementation LoginViewController
    @synthesize usernameField, passwordField, loginButton, loginIndicator;

    -(IBAction) login: (id) sender
    {
    if ([usernameField.text isEqualToString: @"userOne"] && [passwordField.text
    isEqualToString: @"passwordOne"])
    {
    printf("Success")
    //here is where I would like to pass usernameField.text to WebViews
    }
    else if (([usernameField.text isEqualToString: @"userTwo"] && [passwordField.text 
    isEqualToString: @"passwordTwo"])
    {
    printf("Success")
    //here is where I would like to pass usernameField.text to WebViews
    }
    else
    {
    printf("Login Failed")
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login Failed"
                 message:@"Wrong username and password" delegate:self
                 cancelButtonTitle:@"Done"
                 otherButtonTitles:nil];
    [alert show];
    }
    loginIndicator.hidden=False;
    [loginIndicator startAnimating];
    }
    -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    if([[segue identifier] isEqualToString:@"fromLogin"])
    {
        WebViews *wvc = [segue destinationViewController];
        wvc.usernamerField = self.usernameField.text;
    }
    }
    @end

//WebViews.h

    @interface WebViews : UIViewController
    {
    IBOutlet UIWebView *webView;
    NSString *usernameField;
    }
    @property (nonatomic, strong) NSString*usernameField;

    @end

//WebViews.m

 #import "WebViews.h"
    @interface WebViews ()//To be honest I'm not sure what this is for
    @end
    @implementation WebViews
    @synthesize usernameField;

    -(void)viewDidLoad
    {
    [super viewDidLoad];
    NSLog(@"username is = %@", self.usernameField);
    if([T.usernameField.text isEqualToString: @"userOne"])
    {
    [webView loadRequest: [NSURLRequest requestWithURL: [NSURL 
    URLWithString:@"http://www.google.com"]]];
    }
    else if([T.usernameField.text isEqualToString: @"userTwo"])
    {
    [webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://www.yahoo.com"]]];
    }
    else
    {
    [webView loadRequest: [NSURLRequest requestWithURL: [NSURL URLWithString:@"http://www.wikipedia.com"]]];
    }

    @end

どんな助けでも大歓迎です

4

1 に答える 1

0

あなたの問題は、あなたが何も割り当てていないTので、それがnilあなたのメソッドにあるということです。

LoginViewControllerのコードで、ユーザー名をWebViewControllerに渡す必要があります。これは、メソッドを実装することで実行できますprepareForSegue

これは、prepareForSegueを渡す方法から抜粋した例です:オブジェクト

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    // Make sure your segue name in storyboard is the same as this line
    if ([[segue identifier] isEqualToString:@"YOUR_SEGUE_NAME_HERE"])
    {
        // Get reference to the destination view controller
        WebViewController *wvc = [segue destinationViewController];

        // Pass any objects to the view controller here, like...
        wvc.username = self.usernameField.text;
    }
}
于 2012-10-17T22:45:55.357 に答える