美文网首页
KVO 观察 UITabBarViewController 的s

KVO 观察 UITabBarViewController 的s

作者: AlexCorleone | 来源:发表于2017-09-14 18:56 被阅读69次

遇到的问题:

今天做MVVM框架的时候我尝试写一个路由转发的类,但是在对UITabBarViewController的selectedIndex进行键值观察的时候发现并没有起作用,用到的具体API。

- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context;

- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary*)change context:(nullable void *)context;未调用,

具体代码:

@property (nonatomic, strong) UITabBarController *targetTB;

[self addObserver:self forKeyPath:@"targetTB.selectedIndex" options:NSKeyValueObservingOptionNew context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context

{  //break point here }

我不明白系统怎么实现的,我想尝试点击TabBarItem切换selectedindex的时候是否调用了selectedIndex的setter方法,我重写了selectedIndex的setter方法, 系统并没有调用selectedIndex的setter方法 , 而且很奇怪的是在setter方法内部取不到_selectedIndex。但是如果我手动修改self.targetTB.selectedIndex的值时,-observeValueForKeyPath方法被执行了。我暂时在网上没有找到问题的原因,于是根据TabBarViewController的其他属性我迂回实现了自己想要的效果。

实现TabBarViewController点击切换TabBarItem获取时间的具体代码如下:

@property (nonatomic, strong) UITabBarController *targetTB;

[self addObserver:self forKeyPath:@"targetTB.selectedViewController" options:NSKeyValueObservingOptionNew context:nil];

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context

{  //write your code here }

相关文章

  • KVO 观察 UITabBarViewController 的s

    遇到的问题: 今天做MVVM框架的时候我尝试写一个路由转发的类,但是在对UITabBarViewControlle...

  • KVO & KVC

    KVO(键值观察者) 什么是KVO,KVO的实现机制是什么? KVO就是键值观察者,是观察者设计模式的实现 使用i...

  • 对NSMutableArray进行KVO

    对NSMutableArray进行KVO KVO的原理简单来说就是重写了被观察者属性的set方法,一般情况下调用s...

  • iOS崩溃处理机制:KVO Crash

    KVO Crash,通常是KVO的被观察者dealloc时仍然注册着KVO导致的crash,添加KVO重复添加观察...

  • KVO

    KVO 简介 KVO 键值观察机制,就是观察指定对象的指定属性变化情况。 KVO 键值观察 依赖于 KVC 健值编...

  • iOS知识点小结

    1.KVO1.1> KVO 简介:KVO 是 OC 观察者设计模式的一种实现.KVO 指定一个被观察的对象的属性,...

  • OC语言之KVO与KVC

    KVO 什么是KVO? KVO 是 Key-value observing(键值观察)的缩写。 KVO是Objec...

  • 如何用KVO观察对象的子对象的属性变化

    如何用KVO观察对象的子对象的属性变化?KVO观察多级对象属性变化

  • iOS-KVO相关

    KVO相关 一、KVO初探 — 响应观察 (一)KVO 使用 的 三部曲 1、添加观察 2、响应 3、析构 (...

  • KVO实现原理

    KVO KVO 是 Key-Value-Observing 的简称。 KVO 是一个观察者模式。观察一个对象的属性...

网友评论

      本文标题:KVO 观察 UITabBarViewController 的s

      本文链接:https://www.haomeiwen.com/subject/ysidsxtx.html