关联:添加观察者实现同步

作者: 阿良天界 | 来源:发表于2016-10-15 10:53 被阅读0次

    一,要求

    1.关联的两个视图在同一个控制器里

    2.将两个需要关联的View的头文件导入控制器

    3.@interface FirestViewController ( ) 中子类化俩View

    @property(nonatomic,strong)TopNavCollectiomView *topVC;

    @property(nonatomic,strong)ContentCollectionView *contentVC;

    二,创建观察者(这里以导航视图和内容视图关联实现同步为例)

    在-(void)viewDidLoad方法中添加视图观察者

    //给头部视图添加观察者

    [self.topVC addObserver:self forKeyPath:@"currentItem" options:NSKeyValueObservingOptionNew context:nil];      //监听topVC中currentItem属性

    //内容视图添加观察者

    [self.contentVC addObserver:self forKeyPath:@"currentItem" options:NSKeyValueObservingOptionNew context:nil];

    三,实现监听方法

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

    NSNumber *newValue=change[@"new"];//接收监听变量的变化值

    NSInteger item=[newValue integerValue];

    NSIndexPath *indexPath=[NSIndexPath indexPathForItem:item inSection:0];

    if (object==self.topVC &&self.contentVC.currentItem!=item) {

    self.contentVC.currentItem=item;

    //滑动到指定位置

    [self.contentVC scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];

    }else if (object==self.contentVC && self.topVC.currentItem!=item){

    self.topVC.currentItem=item;

    //滑动到指定位置

    [self.topVC scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES];

    }

    //刷新视图

    [self.contentVC reloadData];

    [self.topVC reloadData];

    }

    相关文章

      网友评论

        本文标题:关联:添加观察者实现同步

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