0

目標 C の学習を始めたばかりです。ログイン ページが存在し、パスワードが 8 以上の場合にのみ受け入れられる小さなアプリを作成したいと考えています。送信すると、次のページは映画とそのページには、検索ボタンと、そのリストを編集可能にするボタンの追加と削除が必要です。ログインページを作成し、送信ボタンを映画リストページに直接リンクしました。パスワードの長さとユーザー名の条件をどのように検証する必要があるかについて混乱していました。それを行い、私の映画リストページの適切な編集ボタンを取得するのを親切に助けてください.

ありがとう

「ViewController.m」

#import "ViewController.h"
#import "MovieList.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)loadView{
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view.backgroundColor = [UIColor cyanColor];
UILabel *name=[[UILabel alloc] init];
UILabel *pass=[[UILabel alloc] init];
UITextField *username = [[UITextField alloc]init];
UITextField *password = [[UITextField alloc]init];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[name setBackgroundColor:[UIColor cyanColor]];
[name setText:@"UserID"];
[name setTextColor:[UIColor blackColor]];
[pass setBackgroundColor:[UIColor cyanColor]];
[pass setText:@"Password"];
[pass setTextColor:[UIColor blackColor]];
[button setTitle:@"SUBMIT" forState:UIControlStateNormal];
username.delegate = self;
password.delegate = self;
username.borderStyle = UITextBorderStyleRoundedRect;
password.borderStyle = UITextBorderStyleRoundedRect;
name.frame = CGRectMake(20, 15, 80, 20);
pass.frame = CGRectMake(15, 55, 80, 20);
username.frame = CGRectMake(100, 10, 200, 30);
password.frame = CGRectMake(100, 50, 200, 30);
button.frame = CGRectMake(130, 90, 80, 30);
[self.view addSubview:button];
[self.view addSubview:username];
[self.view addSubview:password];
[self.view addSubview:name];
[self.view addSubview:pass];
[button addTarget:self action:@selector(gotosecondpage)  forControlEvents:UIControlEventTouchUpInside];
}
-(void)gotosecondpage
{
Movielist *secondViewcont = [[Movielist alloc] init];
[self.navigationController pushViewController:secondViewcont animated:YES];
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:  (UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range   replacementString:(NSString *)string{
return YES;
}
- (BOOL)textFieldShouldClear:(UITextField *)textField{
return YES;
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
@end

「ムービーリスト.m」

#import "MovieList.h"
@interface Movielist()
@end
@implementation Movielist
-(void)loadView{
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view.backgroundColor = [UIColor cyanColor];
}
-(id)init{
[self.navigationItem setTitle:@"Movie List"];
return self;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    [self.view setBackgroundColor:[UIColor cyanColor]];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
CGRect frame = self.view.frame;
UITableView *tableView = [[UITableView alloc] initWithFrame:frame   style:UITableViewStylePlain];

tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
tableView.backgroundColor = [UIColor cyanColor];
tableView.delegate = self;
tableView.dataSource = self;
[self.view addSubview:tableView];
[tableView setScrollEnabled:YES];
[tableView setUserInteractionEnabled:YES];
[tableView setRowHeight:35];
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 20;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellIDent"];
char ch = 'a' + indexPath.row;
cell.textLabel.text = [NSString stringWithFormat:@"%c" , ch];
    return cell;
}
@end
4

1 に答える 1

0

長さのチェックは非常にまっすぐです。重要なことは、ログインページからどのようにナビゲートするかです。現在、gotosecondpage 関数が責任を負っています。おそらく、すべての条件が満たされた場合に gotosecondpage を呼び出すことができる validateParams メソッドを作成できます。

このコードはパスワードの長さを教えてくれます:

-(void) validateParams 
{
    NSString * password = [password text];
    if ([password length] < 8) //and maybe other conditions, too
    {
       [self gotosecondpage];
    }    
    else
    {
       //report error - maybe show some UILabel near username / password fields to show which one of them went wrong
    }
}

他にできることはたくさんあることに注意してください - どのフィールドを修正する必要があるかをユーザーに伝えるなど、より良い方法がたくさんあります。あなたの要件は非常に基本的なものなので、今のところは上記が役に立ちます。

于 2013-01-18T12:05:24.220 に答える