iphone dev のストーリーボードに関するこのチュートリアルを読みました。男はボタンでビューを変更します。ただし、ボタンの接続はインターフェイス ビルダーを介して行われます。ビューが変更される前に、いくつかのチェック (ユーザー名/パスワードなど) を行うことができるように、プログラムでこれを行うにはどうすればよいですか? 前もって感謝します。
2 に答える
1 つのビューを他のビューと接続します (ボタンとビューを接続するのではありません)。セグエをカスタムに変更し、識別子を (IB で) 付けます。例: ログイン
次に、アクションを作成してボタンに割り当てます。
ボタン アクションで次を使用します。
[self performSegueWithIdentifier:@"Login" sender:self];
Segue Class オブジェクトを作成し、.m で次のようなものを使用します。
UIViewController *dst = [self destinationViewController];
UIViewController *nav = [self sourceViewController];
//All your custom code
[nav presentModalViewController:dst animated:YES];
編集: 重要なことを忘れていました!
IB では、セグエ構成で、セグエ クラスに、作成されたセグエ クラスの名前を入力します。例: LoginSegue は、作成されたセグエの名前です。セグエ クラスでは、「LoginSegue」と記述する必要があります。
編集: クラスを作成するには:
1.- UIStoryBoardSegue を拡張する新しいファイルを作成します。.h は次のようになります。
#import <Foundation/Foundation.h>
@interface LoginSegue : UIStoryboardSegue
@end
2.- 実装では、perform というメソッド内で上記のコードを使用します。
-(void)perform
{
UIViewController *dst = [self destinationViewController];
UIViewController *nav = [self sourceViewController];
//Custom Code
[nav presentModalViewController:dst animated:YES];
}
ソース viewController のプロパティにアクセスする必要がある場合は、次のように変更する必要があります。
UIViewController *nav = [self sourceViewController];
に
eYourClass *nav = [self sourceViewController];
この助けを願っています!
ボタンを作成し、 touchUpInside アクションをIBAction
インターフェースビルダーにドラッグすることができます
またはどこかのコードでviewDidLoad
[self.login addTarget:self action:@selector(loginTapped) forControlEvents:UIControlEventTouchUpInside];
次に、loginTapped
メソッドは次のようになります
- (void)loginTapped;
{
if ([self authenticateWithUsername:self.username.text password:self.password.text]) {
[self performSegueWithIdentifier:@"loginSuccessful" sender:self];
} else {
// Warn user about invalid username/password
}
}
identifier
これは、引数に一致する名前でストーリーボードにセグエを作成したことに依存しています