0

UIViewControllerほとんどのユーザーのやり取りが発生するメインがあります。メインの ViewController には 3 つのサブビューがあります。ユーザーは、個別の ViewController を UIView サブビューにロードできます。

ロードされる各サブビューは、データ入力を処理します。順番に、firstResponders呼び出されます。firstRespndersおそらく「完了」ボタンを使用して、メインのViewControllerを介して閉じることができるようにしたいと思います。

私は、別々のサブビューのそれぞれに、ex という 1 つの名前でメソッドを追加できると考えていました。

-(void) methodToResignResponders {}

次に、メインの ViewController で、現在ユーザーに開かれているビューに対してこのメ​​ソッドを呼び出します。次に、サブビューでアクティブなレスポンダーを辞任します。

さらに詳しい情報:

これは、各ビューをメイン ViewController のサブビューとして設定する方法です。

UIViewController *calcVC;



//set up the view to be added depending on the name of the view that was passed

if ([viewName isEqualToString:@"Tax"]) {

    calcVC= [[TAXViewController alloc]initWithNibName:@"TAXViewController" bundle:nil];

}else if ([viewName isEqualToString:@"Rent"]){

    calcVC= [[RENTViewController alloc]initWithNibName:@"RENTViewController" bundle:nil];

}else //continues with more views...



//Then add it to the subview

[firstView addSubview:calcVC.view];
4

3 に答える 3

1

すべてのサブビュー コントローラーが実装する基本的なプロトコルを作成して、必要なすべてのことを実行できます (ファーストレスポンダーの辞任など)。

于 2013-02-01T18:13:57.037 に答える
1

主にあなたがすでに自分で解決したように聞こえるため、これの要点を理解しているかどうかはわかりません。:)

しかし、あなたが話しているViewControllerを見ることができるのは、常にcalcVCという名前のUIViewControllerインスタンスです。参照しているのが常にこのviewControllerのビューである場合は、単に呼び出すことができます[calcVC.view resignFirstResponder];

于 2013-02-01T17:33:23.780 に答える
0

これがあなたの質問に答えるかどうかはわかりませんが、すべてのサブビューをループして、存在する場合は次のように呼び出すことができます:

for (UIView *subview in [self.view subviews]) {
    if ([subview respondsToSelector:@selector(resignFirstResponder)]) {
        [subview resignFirstResponder];
    }
}
于 2013-02-01T18:27:57.213 に答える