2010-08-12 50 views
1

我有2个意见。一个是'viewheader',另一个是'viewContent'(添加为子视图)。如何从OTHER视图中删除(弹出)视图?

'viewContent'包含一个TableView(基于UINavigationController),TableView可以深入到DetailView(UIViewController)。 (见下图)

我的问题是:我如何可以删除(POP)的的DetailView,有一个UIButton FROM的 'headerView'。

目标是创建一个固定的导航,并且只更改(动画)较低的内容。

由于

// 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]; 
} 

回答

0

我发现了我的错误。 'viewNader'内'contentNavView'的定义是错误的

将它从UIViewController更改为UINavigationController。

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

调用

[contentNavView pushViewController:aViewController animated:NO]; 

作品。

0

当在头部视图按钮被点击你必须以某种方式发送removeFromSuperview消息给细节视图(即一个IBAction被触发)。您可以通过将详细信息视图设置为标题视图控制器的属性,以便能够在标题视图的IBAction中调用详细信息视图的removeFromSuperview。 或者如果您更喜欢松耦合(您应该这样做),请在标题视图中发布IBAction的通知,并使用从标题视图中删除详细视图的方法在详细信息视图中注册该通知。