Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当presentModalViewController显示任何viewcontroller时,我如何注意到?_Ios_Objective C - Fatal编程技术网

Ios 当presentModalViewController显示任何viewcontroller时,我如何注意到?

Ios 当presentModalViewController显示任何viewcontroller时,我如何注意到?,ios,objective-c,Ios,Objective C,为了解决这个问题,我尝试使用KVO(键值观察)来监视名为“presentedViewController”的属性。我制作了一个自定义viewcontroller作为基本viewcontroller,用于应用程序中所有viewcontroller的基本viewcontroller。然后,我将以下代码添加到viewcontroller的initWithNibName:bundle: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBu

为了解决这个问题,我尝试使用KVO(键值观察)来监视名为“presentedViewController”的属性。我制作了一个自定义viewcontroller作为基本viewcontroller,用于应用程序中所有viewcontroller的基本viewcontroller。然后,我将以下代码添加到viewcontroller的initWithNibName:bundle:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [self addObserver:self forKeyPath:@"presentedViewController" options:NSKeyValueObservingOptionNew context:nil];
    }
    return self;
}
而最重要的观察方法是:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    NSLog(@"object %@", object);
}
最后,我从包含上述代码的基本viewcontroller派生了一个viewcontroller。 当我使用presentModalViewController方法使其成为模态viewcontroller时。但是,观察我安装的没有工作。我希望在调用该方法时,观察被命中。不幸的是,什么也没有发生

简言之,我有两个问题。首先是为什么这不起作用。另一个是,有任何好的方法来实现这一目标

编辑: 我通过@jailani habeeb的方式获得了成功。谢谢你@jailani habeeb。
此外,我真的很想知道为什么KVO不工作。“title”等任何其他属性都可以正常工作。

presentModalViewController在iOS 6中被弃用。您可以改为使用presentViewController:animated:completion:。您可以在完成块中执行逻辑

  • 您可以将UIViewcontroller子类化并重写该方法

    presentViewController:动画:完成:

  • 然后在显示任何视图控制器时发出postnotification

  • 无论何时何地,为视图控制器注册该通知 需要通知吗


  • 尝试在viewDIdLoad方法中添加观察者。@Greg这不起作用。我试过了。谢谢你的建议。它实际上帮助我实现我的目标。我真正想做的是在显示任何viewcontroller之前做一些事情。所以,你的第一个方法对这种情况很好。