0

我有两个viewController:AController(UIScrollView 是子视图)和BController

  • 从 AController 我使用 presentModalViewController 到 BController 。从BController 我使用dismissModalViewControllerAnimated 回到AController。但是,我想从 BController 为 UIScrollView 设置隐藏。

请帮我 !谢谢!

4

2 回答 2

0

我认为最干净的方法是使用委托协议。AController 将成为 BController 的代表。并且在 BController 被解除之前,它可以调用协议的一个方法来提醒 AController,并在隐藏 scrollView 的同时提醒 AController 本身。

或者,您可以-viewWillAppear在 AController 实现文件中覆盖,以测试“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 回答
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 回答