2010-08-12 20 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的通知,並使用從標題視圖中刪除詳細視圖的方法在詳細信息視圖中註冊該通知。