En un projecte iOS, podem arribar a treballar amb un UISplitViewController, a on entren en acció 2 vistes diferents: la part esquerra i part dreta. Normalment, la part esquerra serà una taula (Master) i la part dreta serà el detall de l’ítem seleccionat de la taula (Detail).
Si en un moment concret des del Master volem accedir a la part Detail, per poder actualitzar quelcom, cal utilitzar la propietat “splitViewController” que té la classe UIViewController. Aquesta propietat proporciona el UISplitViewController “pare” més proper del viewcontroller. Un cop tenim el UISplitViewController, podem accedir a l’array de viewcontrollers que el formen, el qual contindrà només 2 objectes: Master (0) i Detail (1).
|
1 2 3 4 5 6 |
id detailVC = [self.splitViewController.viewControllers lastObject]; SCDetailViewController *detail = (SCDetailViewController*)detailVC; if(detail) { [detail setText:@"Detail 1"]; } |
Per altra banda, si la comunicació entre viewcontrollers és a l’inversa, cal fer un pas intermig. A més a més, d’utilitzar la propietat “splitViewController” en el Detail, quan obtenim el primer element de l’array de viewcontroller, s’ha de tenir en compte que aquest està dins d’un UINavigationController. Per tant, no podrem treballar directament amb ell:
|
1 2 3 4 5 6 |
UINavigationController *nc = (UINavigationController *)[self.splitViewController.viewControllers objectAtIndex:0]; SCMasterViewController *master = (SCMasterViewController*)[nc.viewControllers objectAtIndex:0]; if(master){ [master setTitle:@"master updated"]; } |



