Objective-C 以编程方式在另一个视图控制器上显示视图控制器

Posted

技术标签:

【中文标题】Objective-C 以编程方式在另一个视图控制器上显示视图控制器【英文标题】:Objective-C Showing a view controller on another view controller programmatically 【发布时间】:2014-07-06 11:15:49 【问题描述】:

我有一个问题。我有一个 viewController1,我在其中单击一个按钮。当我点击这个按钮时,我希望它在 viewController1 上显示另一个视图控制器(viewController2)(viewController2 有点透明)。 我想以编程方式执行此操作。 我试过了,但是当我按下按钮时没有任何反应:

Notification *newView = [[Notification alloc]initWithNibName:@"Notification" bundle:nil];
[self.navigationController pushViewController:newView animated:YES];

我重命名了一些变量以使其更清晰。感谢您的回答!

编辑:也许我不够清楚,我希望 viewController2 成为 viewController1 的 ONTOP

【问题讨论】:

你想如何展示它?它是否应该带有导航(例如从屏幕底部或右侧滑入)?另外,您能否检查一下您的navigationController 是否初始化为:NSLog(@"%@", self.navigationController);,如果是nil,请确保您的视图控制器可以访问navigationCotnroller。` 不管怎么看,最好不要动画。输出也不为零。 你的按钮方法中的代码执行了吗?如果您希望 viewController1 在 vi​​ewController2 下可见,那么此方法将不起作用。推送视图控制器会导致旧控制器的视图被推送到屏幕之外并从窗口的视图层次结构中删除。 【参考方案1】:

试试下面:-

 Notification *newView = [[Notification alloc]initWithNibName:@"Notification" bundle:nil];
  [self presentViewController:newView  animated:YES completion:nil];

【讨论】:

如果这对您不起作用,那么您的代码中存在严重错误。

以上是关于Objective-C 以编程方式在另一个视图控制器上显示视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Objective-C 控制器中以编程方式加载用 swift 编写的自定义 XIB 视图

如何使用 Objective-C 以编程方式使我的 UIView 可水平滚动?

在 iOS 7/Objective-C 中,如何以编程方式将 UIPickerView 捕捉到它所在的父视图的底部?

以编程方式设置初始视图控制器 Swift

iOS9:在另一个以编程方式添加的视图中居中以编程方式添加的视图

在另一个以编程方式创建的视图下方布局视图