0

私は2つのviewControllerを持っています:AController(UIScrollViewはサブビューです)とBController

  • presentModalViewControllerを使用するAControllerIからBControllerへ。BControllerからdismissModalViewControllerAnimatedを使用してAControllerに戻ります。しかし、私はBControllerからUIScrollViewのセットを非表示にしたいです。

私を助けてください !ありがとう!

4

2 に答える 2

0

AView viewWillAppear 通知で経験をあまり使用しない場合は、委任を使用します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideScrollView) name:@"hideScrollView" object:nil];

そしてあなたのBViewの使用で:

[[NSNotificationCenter defaultCenter]
     postNotificationName:@"hideScrollView" object:nil];

その結果、スクロールビューを非表示にできるときに、AView で hideScrollView メソッドを起動します。

于 2013-01-14T15:11:45.447 に答える
0

これを行う最もクリーンな方法は、委任プロトコルを使用することだと思います。AController は BController のデリゲートになります。また、BController が閉じられる前に、プロトコルのメソッドを呼び出して AController に警告し、AController 自体を呼び出して scrollView を非表示にすることができます。

または、AController 実装ファイルでオーバーライド-viewWillAppearして、「self.presentedController」が BController のサブクラスであるかどうかをテストできます。そうであれば、scrollView を非表示にすることができます。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    if ([self.presentedViewController isKindOfClass:[BController class]]) {
        //hide the scroll view
    }
}

また、-dismissModalViewControllerAnimated:iOS 4 以前をサポートする場合を除き、使用しないことをお勧めします。このメソッドは iOS 6 で廃止されたため、- dismissViewControllerAnimated:completion:すぐに使用することをお勧めします。

于 2013-01-14T15:09:04.033 に答える