2012-09-01 3 views
3

À l'aide de MGSplitViewController, comment modifier le contrôleur de vue détaillée? Il y a une propriété déclarée:MGSplitViewController modifier le contrôleur de vue détaillée

@property (nonatomic, retain) IBOutlet UIViewController *detailViewController; // convenience. 

faire splitVC.detailViewController = myVC; n'a pas d'effet. Au lieu de cela, je dois faire splitVC.viewControllers = @[masterVC, myVC];. Cela fonctionne, mais est-ce la bonne façon?

Merci!

Répondre

2

Vous le faites correctement. De UISplitViewController Référence:

Le contrôleur de vue partagé n'a pas d'interface importante de son propre. Son travail consiste à gérer la présentation de ses deux contrôleurs de vue enfant et des transitions entre différentes orientations.

aussi:

Vous devez attribuer deux contrôleurs de vue à un contrôleur de vue partagé. Généralement, vous configurez ces contrôleurs de vue dans un storyboard; Si vous créez un contrôleur de vue fractionnée par programme, vous les attribuez en utilisant la propriété viewControllers.

+0

Merci, je voulais juste confirmer :). Un peu déroutant parce que la propriété est déclarée comme conserver, plutôt que readonly – 0xSina

-3

Non, ce n'est pas la bonne façon, au lieu d'allouer votre maître et détail viewcontroller dans NavigationController comme UINavigationController *nav1 = [UINavigationController alloc]initwithrootviewcontroller:masterviewcontroller]; nav2 également pour detail.Then écrire

splitViewController = [[UISplitViewController alloc] init]; 
splitViewController.viewControllers = [NSArray arrayWithObjects:nav1,nav2, nil]; 
splitViewController.delegate = detailViewController; 

Thats it. Espérons que cela aide.

1

Lorsque vous utilisez MGSplitViewController, un moyen de régler la detailViewController sans remettre à zéro tout (ce qui semble très inefficace) est de mettre l'detailViewController puis appelez layoutSubviews

splitViewController.detailViewController = myVC; 
[splitViewController layoutSubviews]; 

Cela évite la surcharge inutile de supprimer le point de vue du maître viewcontroller puis en le réinitialisant.

Espérons que cela aide!

Questions connexes