以编程方式将导航控制器嵌入模态视图控制器

Posted

技术标签:

【中文标题】以编程方式将导航控制器嵌入模态视图控制器【英文标题】:Embed navigation controller in modal view contriller programatically 【发布时间】:2015-03-12 03:45:07 【问题描述】:

我正在使用以下代码展示一个模态视图控制器,

[[mInfo objectForKey: kNavigationController] presentViewController:(UIViewController*)modalViewControlr animated:YES completion:nil];

UITableView。在选择表格视图单元格时,我想将其导航到另一个名为 navigatedViewUIView

这可以通过在导航控制器中嵌入自我(即modalViewControlr)并将视图(即navigatedView)添加到视图控制器并呈现它来完成吗? 例如,

// in modalViewControlr
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

//

 UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:self];
        UIViewController *vc = [[UIViewController alloc]init];
        [vc.view addSubview:self.navigatedView];
        self.navigatedView.frame=vc.view.frame;
 [passcodeNavigationController pushViewController: vc animated:YES];

//


请帮忙....

【问题讨论】:

【参考方案1】:

我更喜欢这样更容易理解。

1.在AppDelegate中嵌入navigationController:

ModalViewControlr *vc = [[ModalViewControlr alloc]init];
UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = passcodeNavigationController;

2.新建类NavigatedViewController并自定义viewDidLoad中的控制器

创建一个UIView 调用navigatedView

@property (nonatomic, strong) UIView *navigatedView;

-(void)viewDidLoad

   [super viewDidLoad];
   _navigatedView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
   self.navigatedView.backgroundColor = [UIColor redColor];
   [self.view addSubView:self.navigatedView];

3.然后返回你要推送的modalViewControlr

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

   NavigatedViewController *vc = [[NavigatedViewController alloc] init];
   [self.navigationController pushViewController:vc animated:YES];

【讨论】:

以上是关于以编程方式将导航控制器嵌入模态视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

嵌入到导航控制器中的动画根视图控制器以模态方式呈现

如何以编程方式将视图控制器嵌入到导航视图控制器中

以模态方式呈现视图控制器时,导航栏与黑色而不是白色混合

在导航堆栈中以模态方式呈现视图控制器

如何以编程方式快速实例化具有嵌入式导航控制器的视图控制器?

以编程方式从嵌入导航控制器的视图中解除弹出窗口