Ios 当presentModalViewController显示任何viewcontroller时,我如何注意到?
为了解决这个问题,我尝试使用KVO(键值观察)来监视名为“presentedViewController”的属性。我制作了一个自定义viewcontroller作为基本viewcontroller,用于应用程序中所有viewcontroller的基本viewcontroller。然后,我将以下代码添加到viewcontroller的initWithNibName:bundle:Ios 当presentModalViewController显示任何viewcontroller时,我如何注意到?,ios,objective-c,Ios,Objective C,为了解决这个问题,我尝试使用KVO(键值观察)来监视名为“presentedViewController”的属性。我制作了一个自定义viewcontroller作为基本viewcontroller,用于应用程序中所有viewcontroller的基本viewcontroller。然后,我将以下代码添加到viewcontroller的initWithNibName:bundle: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBu
- (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:。您可以在完成块中执行逻辑
尝试在viewDIdLoad方法中添加观察者。@Greg这不起作用。我试过了。谢谢你的建议。它实际上帮助我实现我的目标。我真正想做的是在显示任何viewcontroller之前做一些事情。所以,你的第一个方法对这种情况很好。