title: How to send the RACSignal to cell's viewMode when click a button outside of the Cells
body: <p>I have a button on navigation bar, that named "Edit". And a <code>UICollectionView</code> show with some content. 
  To click the "Edit" button will make into a "EditMode", and the button's title become "Done", the <code>UICollectionView</code>'s cell should also updated. Click the "Done" button will do the reverse.</p>
  
  <p>I have write the code bellow:
  Now after click the "Edit"|"Done" button, the hole collection View will be updated with a refresh, since there's images in the cell get from service which I don't update them. I prefer just update the icon by Cell's signal. but How to refactor the code? </p>
  
  <p><strong>1.viewController's</strong>   <code>-(void)viewDidLoad</code></p>
  
  <pre><code> [[[[self.editButton rac_signalForControlEvents:UIControlEventTouchUpInside]
      doNext:^(UIButton *sender) {
          if ([sender.titleLabel.text isEqualToString:@"Edit"]) {
              [sender setTitle:@"Done" forState:UIControlStateNormal];
          }else{
              [sender setTitle:@"Edit" forState:UIControlStateNormal];
          }
      }]
      flattenMap:^RACStream *(UIButton *sender) {
          BOOL isEditMode = [sender.titleLabel.text isEqualToString:@"Edit"];
          return [RACSignal return:@(isEditMode)];
      }] subscribeNext:^(NSNumber* x) {
          [self.viewModel setEditMode:x.boolValue];
      }];
  
    // Binding to view model
    [[RACObserve(self.viewModel, dataArray) 
       deliverOnMainThread] subscribeNext:^(id x) {
           @strongify(self);
           [self.collectionView reloadData];
       }];
  </code></pre>
  
  <p><strong>2.1.viewController's ViewModel's</strong> <code>property</code></p>
  
  <pre><code> @property (nonatomic, assign, getter= isEditMode) BOOL editMode;
  </code></pre>
  
  <p><strong>2.2.viewController's   ViewModel's</strong>  <code>-(id)init</code></p>
  
  <pre><code>  self.isEditModeSignal = RACObserve(self, isEditMode);
  </code></pre>
  
  <p><strong>3.viewController's</strong>  <code>- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath</code></p>
  
  <pre><code>  DataModel* item = [self.dataArray objectAtIndex:indexPath.row];
    [cellViewModel setDataModel:item
           withIsEditModeSignal:self.viewModel.isEditModeSignal];
    [Cell setCellViewModel:cellViewModel];
  </code></pre>
  
  <p><strong>4.Cell's ViewModel's</strong> <code>-(void)setDataModel:(DataModel)data withIsEditModeSignal:(RACSignal*)isEditModeSignal</code></p>
  
  <pre><code> self.thing1Signal = [[RACSignal combineLatest:@[self.isEditModeSignal,
                                                       other1Signal,
                                                       other2Signal]
                                   reduce:^id(NSNumber *isEditMode,
                                              NSNumber *other1,
                                              NSNumber *other2){
                                       return @(isEditMode.boolValue &amp;&amp; other1.boolValue &amp;&amp; other2.boolValue);
                                   }];
  
   self.thing2Signal = [[RACSignal combineLatest:@[self.isEditModeSignal,
                                                       other3Signal,
                                                       other4Signal]
                                   reduce:^id(NSNumber *isEditMode,
                                              NSNumber *other3,
                                              NSNumber *other4){
                                       return @(isEditMode.boolValue &amp;&amp; other3.boolValue &amp;&amp; other4.boolValue);
                                   }];
  </code></pre>
  
  <p><strong>5.Cell.m's</strong> <code>-(void)setCellViewModel:(CellViewModel*)viewModel</code></p>
  
  <pre><code> [[[self.viewModel.thing1Signal deliverOnMainThread] takeUntil:self.rac_prepareForReuseSignal]  subscribeNext:^(NSNumber *isHidden) {
    self.icon1.hidden = isHidden.boolValue;
   }];
  
   [[[self.viewModel.thing2Signal deliverOnMainThread] takeUntil:self.rac_prepareForReuseSignal]  subscribeNext:^(NSNumber *isHidden) {
    self.icon2.hidden = isHidden.boolValue;
   }];
  </code></pre>