раскадровка iOS, передающая навигацию данныхViewController - PullRequest
31 голосов
/ 08 декабря 2011

У меня проблема с правильной передачей данных между представлениями, но не стандартным способом.

Изображение, описывающее мою проблему:

http://i.stack.imgur.com/0jHYC.png

I executeSegueWithIdentifier с одним из двух идентификаторов segue, а затем я хочу передать данные в ViewController с именем «Firmy» или «Oddzialy».

Код передачи данных:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
  if ([[segue identifier] isEqualToString:@"sLogowanieFirmy"]) {
      FirmyVC *firmyVC = [segue destinationViewController];
      firmyVC.tabFirmy = self.tabFirmy;
  }
  if ([[segue identifier] isEqualToString:@"sLogowanieOddzialy"]) {
      OddzialyVC *oddzialyVC = [segue destinationViewController];
      oddzialyVC.wybranaFirma = [self.tabFirmy objectAtIndex:0];
  }
}

Проблема в методе [segue destinationViewController] , поскольку destinationViewController для segue - это NavigationViewController.

Итак, как правильно передавать данные и иметь независимые навигационные контроллеры?

Ответы [ 2 ]

58 голосов
/ 08 декабря 2011

UINavigationController имеет свойство с именем topViewController, которое возвращает контроллер представления, находящийся на вершине стека.

Так что ваш метод prepareForSegue: может выглядеть примерно так ...

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"sLogowanieFirmy"]) {
        UINavigationController *nav = [segue destinationViewController];
        FirmyVC *firmyVC = (FirmyVC *)nav.topViewController;
        firmyVC.tabFirmy = self.tabFirmy;
    }

    // etc...
}
3 голосов
/ 08 января 2016

Вот оно по-быстрому:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{    
    if (segue.identifier == "sLogowanieFirmy") {
        let nav = segue.destinationViewController as! UINavigationController 
        let firmyVC = nav.topViewController as! FirmyVC
        firmyVC.tabFirmy = self.tabFirmy            
    }

    // etc...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...