iphone - UIViewController childViewControllers 数组上的 KVO

标签 iphone objective-c ios

使用 accessors似乎是在集合对象上获取 KVO 通知的方法,但这似乎不适用于 UIViewController 的 childViewControllers NSArray 属性。我想在向该属性添加或删除对象时收到通知。所以我尝试了这个:

[self addObserver:self forKeyPath:@"childViewControllers" options:NSKeyValueObservingOptionNew context:nil];

-(NSUInteger)countOfChildViewControllers
{
    return self.childViewControllers.count;
}

但我不确定我是否做对了,我没有收到任何通知。我想要的可能吗?

最佳答案

关键是所有对属性的修改都必须通过符合 KVO 的方式。这与 UIViewController 的实现方式有关,在该类之外您无能为力。使用索引集合访问器是 UIViewController 的实现可以实现 KVO 合规性的一种方式,但还有其他方式。我不知道该属性是否符合 KVO;从你的报告来看,显然不是。如果底层实现不使用它们,则在类别或子类中添加 getter 甚至 setter 都无济于事。

关于iphone - UIViewController childViewControllers 数组上的 KVO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10339966/

相关文章:

ios - touchesBegan 之后调用的 viewDidLayoutSubviews - 一次又一次

ios - 带有 HTTP 身份验证的 NSURLRequest

objective-c - 我到底应该传递什么 -[NSApp activateIgnoringOtherApps :] to get my application to start "naturally" in comparison to most other OS X apps?

ios - 仅在一个 UITabBarItem 上实现 SWRevealViewController

ios - TouchUpInside 按钮不工作

iphone - iOS开发者有没有 'themes'?

ios - 在 iPhone 4S [iOS 8.1] 中拍照时 Safari 崩溃

ios - 表didSelect方法无法正常工作

objective-c - 工作表从 View 中弹出

ios - 从任何其他类的 Controller 中删除 View ?