0

これを .m ファイルに入力しましたがStudentLoginViewController、コンパイラはエラーを表示し続けます。

「NOSbject」の目に見える @interface がセレクター「viewDidLoad」を宣言していません

これが私のコードです:

// StudentLoginViewController.h

#import <UIKit/UIKit.h>

@interface StudentLoginViewController : NSObject  <UITextFieldDelegate> {
    IBOutlet UILabel *Username ,*Password ;
    IBOutlet UIButton *LoginButton ;
    IBOutlet UITextField *UsernameText ,*PasswordText;
}

@end

// StudentLoginViewController.m

#import "StudentLoginViewController.h"

@interface StudentLoginViewController ()

@end

@implementation StudentLoginViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    UsernameText.delegate=self;
    PasswordText.delegate=self;
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    // this text will not be updated to the newest text yet,
    // but we know what what the user just did to get into a string

    NSString *Username, *Password;
    if (textField == UsernameText) {
        Username = @"jzarate";
        Password = PasswordText.text; 
    } else {
        Username= UsernameText.text;
        Password = @"14054";
    }

    // If both the username and password are correct  then enable the button
    LoginButton.enabled = ([Username isEqualToString:@"jzarate"] && [Password isEqualToString:@"14054"]);

    // return YES so that the users edits  are used
    return YES;
}

@end

上記の .m ファイルのコードはその中のすべてのコードであることに注意してください。この上下の他の部分は削除しました。

4

1 に答える 1

2

NSObjectではなくからviewDidLoad継承する際に呼び出されるためです。NSObject はそれ自体がすべてのスーパー クラスであるため、viewDidLoad を宣言する親はありません。したがって、次の場所でエラーが発生しています:StudentLoginViewControllerUIViewController

[super viewDidLoad];

書く:

@interface StudentLoginViewController : UIViewController <UITextFieldDelegate>

それ以外の

@interface StudentLoginViewController : NSObject <UITextFieldDelegate>

于 2013-03-28T07:12:39.427 に答える