为解决此问题,我尝试使用KVO(键值观察)来监视名为“presentsViewController”的属性。我创建了一个自定义viewcontroller作为基本viewcontroller,它用于我的应用程序中所有viewcontrollers的基本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'这样的任何其他财产都运作良好..
答案 0 :(得分:1)
presentModalViewController在iOS 6中已弃用。您可以使用presentViewController:animated:completion:而不是。您可以在完成块中执行逻辑。
答案 1 :(得分:0)
您可以继承UIViewcontroller并覆盖方法
presentViewController:动画:完成:
然后在出现任何视图控制器时进行后续通知
为您的视图控制器注册该通知,无论您身在何处 需要通知