我有2个观点。一个是'viewheader',另一个是'viewContent'(作为子视图添加)。
'viewContent'包含一个TableView(基于UINavigationController),TableView可以深入到DetailView(UIViewController)。 (见下图)
我的问题是:如何使用UIButton FROM “headerView”删除(弹出)DetailView。
目标是创建固定导航,并仅更改(动画)较低内容。
感谢
// 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 :(得分:0)
当点击标题视图上的按钮(即触发removeFromSuperview
)时,您必须以某种方式向详细信息视图发送IBAction
消息。您可以通过使详细信息视图成为标题视图控制器的属性来实现此目的,以便能够在标题视图的removeFromSuperview
中调用详细信息视图的IBAction
。
或者,如果您更喜欢松散耦合(您应该这样做),请在标题视图中发布IBAction
的通知,并在详细视图中注册该通知,并使用从标题视图中删除详细信息视图的方法。
答案 1 :(得分:0)
我发现了我的错误。 'viewheader'中'contentNavView'的定义是错误的
将它从UIViewController更改为UINavigationController。
@interface HeaderViewController : UIViewController {
UINavigationController *contentNavView;
}
...
调用
[contentNavView pushViewController:aViewController animated:NO];
作品。