2010-08-12 3 views
1

J'ai 2 vues. L'un est le "viewheader" et l'autre est le "viewContent" (ajouté en tant que sous-vue). 'ViewContent' contient un TableView (basé sur UINavigationController) et TableView peut descendre jusqu'à un détail (UIViewController). (Voir image ci-dessous)Comment supprimer (pop) une vue de l'affichage OTHER?

Ma question est: Comment puis-je supprimer (pop) le DetailView, avec un UIButton DE le 'headerView'.

L'objectif est de créer une navigation fixe, et de ne modifier (animer) que le contenu inférieur.

Merci

// add "fixed" Header 
- (void)loadView { 
    viewHeader = [[HeaderViewController alloc] initWithNibName:@"HeaderViewController" bundle:nil]; 
    self.view = viewHeader.view; 
} 

// add content view 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    viewContent = [[MainContentViewController alloc] initWithNibName:@"MainContentViewController" bundle:nil]; 

    CGRect viewFrame = CGRectMake(0.0f, 164.0f, 320, 316); 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewContent]; 
    [navController setNavigationBarHidden:YES]; 
    [navController.view setFrame:viewFrame]; 
    viewHeader.contentNavView = navController; // <<<< CAN'T POP THE VIEW by passing UINavigationController to "header view" 
    [self.view addSubview:navController.view]; 
} 

Répondre

0

J'ai trouvé mon erreur. La définition de 'contentNavView' à l'intérieur de 'viewheader' était erronée

Changement de UIViewController en UINavigationController.

@interface HeaderViewController : UIViewController { 
    UINavigationController *contentNavView; 
} 
... 

Appel

[contentNavView pushViewController:aViewController animated:NO]; 

œuvres.

0

Vous devez envoyer un message en quelque sorte removeFromSuperview à la vue détaillée lorsque le bouton sur la vue d'en-tête est prélevé (par exemple une IBAction est déclenchée). Vous pouvez réaliser cela en faisant de la vue détaillée une propriété du contrôleur de vue d'en-tête pour pouvoir appeler le removeFromSuperview de la vue détaillée dans IBAction de votre vue d'en-tête. Ou si vous préférez un couplage lâche (comme vous le devriez), publiez une notification du IBAction dans l'en-tête et inscrivez-vous pour cette notification dans la vue détaillée avec une méthode qui supprime la vue détaillée de la vue d'en-tête.

Questions connexes