0

ログインビューコントローラ用のアウトレットを含むルートビューコントローラがあります。ルートビューは次のビューへのフローを制御する必要がありますが、ログインビューには続行するためのボタンがあります。ルートコントローラーのIBActionにボタンのタッチアップを設定するにはどうすればよいですか?

私が持っている方法の1つは、ログインクラスを作成するルートクラスへのポインターを保持することでした(新しいコードはコメントアウトされています)。

// RootViewController.m

- (void)viewDidLoad {
    LoginViewController *loginController = 
        [[LoginViewController alloc]initWithNibName:@"LoginView" bundle:nil];
    self.loginViewController = loginController;
    //loginViewController.parent = self;
    [self.view insertSubview:loginController.view atIndex:0];
    [loginController release];
    [super viewDidLoad];
}

- (IBAction)loginPressed: (id)sender
{
    self.loginViewController.loginButton.enabled = NO; //yea... doesnt work
}

したがって、IBでは、UIViewControllerをNibに追加し、それをアウトレットとして親に指定してから、ルートコントローラー(親)で定義されているloginPressedにボタンのタッチアップインサイドイベントを割り当てます...これは、明示的に参照するとうまく機能しませんでしたRootViewControllerのself.loginViewControllerからのコントロール。

これを行う正しい方法はありますか?

-欲求不満のc++/ c#/javaコーダー

4

3 に答える 3

1

loginViewをモーダルで表示することを検討しましたか?次に、ビューをポップしてrootViewControllerに戻り、そこから先に進むことができます。

于 2011-06-09T21:43:48.953 に答える
0

そのXIBと同じクラスでボタンが押されたメソッドアウトレットを作成し、それを接続します。ログインビューはルートコントローラによって作成されていると思います...ログインビューでルートビューの割り当てプロパティを作成し、ログインビューを作成するときにルートコントローラをそれに割り当てます。次に、ログインビューの「ボタンが押された」方法で、ルートビューコントローラを参照できます。スペルアウト:

LoginControllerの.hファイル:

@property (nonatomic, assign) RootViewController* rvc;

LoginControllerの.mファイル:

@synthesize rvc;

Root View Controllerの「ログインコントローラーコードを作成する」で、初期化した後、提示する前に、次のようにします。

[loginController setRvc:self];

LoginControllerのボタンタッチメソッドで:

[[self rvc] whateverMethodThatDoesLoginStuff];

このようにして、ユーザーがボタンを押してから「ログインする」コードまでの間にパスがあります。

于 2011-06-09T21:50:41.263 に答える
0

loginViewControllerをIBOutletとして使用し、そのアクション「touch upinside」をファイル所有者の-loginPressed:に接続できます。

または、-viewDidLoadでコントローラーをすべて自分でプログラムで割り当てて初期化し、プログラムでアクションを設定することもできます。

しかし、あなたがしたことは、2つの方法を混ぜ合わせているようです。

于 2011-06-09T21:53:51.970 に答える