title: Backward compatibility issue with iOS Segue Data transfer
body: <p>I have discovered a curious issue with some, but not all older hardware running iOS 9.3.5    I would really appreciate any thoughts regarding why this happens. I know I could work around the problem with a singleton global, but this seems so ugly.</p>
  
  <p>In the bad cases, data transfer via a segue does not arrive in the new view controller, whereas with other old hardware running 9.3.5 and all newer hardware everything works as expected.</p>
  
  <p>In brief, I have an App which uses a Master/Detail design which I built up with Interface Builder (not the standard template). The main ViewController includes a UITableView and also uses both the  STCollapse and the MMDrawerSideSlide libraries. Selecting a table row generates a segue in which the prepareForSegue loads some items into properties of the DetailViewController. An NSString property always arrives OK, but in some old hardware (see below) the NSIndexPath of the selected row is correctly moved into the detail’s property in the prepareForSegue in the main VC, but does not arrive in the DetailViewController and the property is NIL when the detail’s viewDidLoad executes.</p>
  
  <p>Table of Value by hardware and iOS version of NSIndexPath in DetailViewController</p>
  
  <pre><code>iPad 2       9.3.5   nil
  iPad Air     9.3.5   nil
  iPad Air2    9.3.5   correct
  iPhone 5     9.3.5   nil
  iPhone 5s    9.3.5   correct
  iPhone 6     9.3.5   correct
  all devices  10.x    correct
  </code></pre>
  
  <p>Code Snippets</p>
  
  <p>Main ViewController.m</p>
  
  <pre><code>-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
  {
      self.selectedIndexPath = indexPath;
      [self performSegueWithIdentifier:@"toDetail" sender:self];
  }
  
  - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
  {
      // Make sure your segue name in storyboard is the same as this line
      if ([[segue identifier] isEqualToString:@"toDetail"])
      {
          DetailViewController *detailVC = segue.destinationViewController;
          detailVC.selectedIndex = self.selectedIndexPath;
          detailVC.searchName = _theName;
      }
  }
  
  
  DetailViewController.h
  @property (nonatomic, weak) NSIndexPath * selectedIndex;
  @property (nonatomic, weak)NSString * searchName;
  
  
  
  DetailViewController.m
  
  - (void)viewDidLoad {       //In new hardware _selectedIndex is OK, in some old hardware, is nil,  _searchName is always OK!
      [super viewDidLoad];
      Kings *flatkings = [Kings sharedKings];
      self.flatSequenceNumber = (int)[flatkings getFlatIndexFromTablePath:_selectedIndex];
      [self drawTheView];
  }
  </code></pre>