【问题标题】:Container Views and presenting child view controllers容器视图和呈现子视图控制器
【发布时间】:2016-06-12 14:27:25
【问题描述】:

关于使用 Objective-C 的 xCode 中的容器视图的问题。当我将容器视图添加到我的项目时,默认情况下它在其父视图控制器中可见。我的目标是让它从一开始是不可见的,并通过带有

的 UIButton 呈现它
addChildViewController:

方法。但为此,我需要它一开始就不在那里。我可以通过将它的 view.alpha 设置为 0 来解决这个问题,但它似乎很啰嗦,有一些可见的东西,必须让它不可见,然后让它再次可见。这似乎不是最佳做法。 我检查了文档,发现了很多有趣的东西,但没有关于这个特定主题的内容。谁能指出我正确的方向?谢谢

---------------更新------- ---------------------

这是我到目前为止所做的。 (在具有所需导入的 h 文件中有一个 @property ChildViewController *vc)。它不工作。就像,它没有隐藏任何东西。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.vc = [[ChildViewController alloc]init];
    [self addChildViewController:self.vc];
    [self.view addSubview:self.vc.view];
    self.vc.view.hidden = YES;
}

【问题讨论】:

  • 为什么不隐藏子视图并使其在按钮点击时可见?
  • 使用 .hidden 可以吗?
  • 是的,您可以在添加为子视图后隐藏子视图并随时显示。
  • hmmm... 我得到这个:“属性访问结果未使用的 getter 不应该用于副作用”?我的线:self.vc.view.hidden;
  • 向我展示如何添加子视图的代码。

标签: objective-c uicontainerview childviewcontroller


【解决方案1】:

通过设置 alpha 来隐藏 View Controller 完全没问题。它的优点是您的视图控制器已准备就绪,因此应用程序会感觉更灵敏。另一种方法是使用“presentViewController”将其(模态)实际添加到视图中。那可能是更正常的方式,但实际上两者都可以。唯一不是一个好主意的情况是,如果您正在显示/隐藏的视图控制器非常占用处理器或内存,并且您需要您的应用程序更高效地使用资源,在这种情况下,您应该以模态方式呈现和关闭它而不是用 alpha 显示/隐藏它。

【讨论】:

  • 但我认为当前的视图控制器不适合子视图控制器?我认为对于子视图控制器,您必须使用 addChildViewControllers?
  • 嗨,保罗。 'childViewController' 这里有点问题。 viewController 是 viewController - 没有不同的种类(子类除外)。子视图控制器的呈现方式意味着它有一个父级,并且是一组子级之一——但这些只是关系。它仍然是一个视图控制器。你实际上并不需要担心这个。只需创建一个视图控制器,并以模态方式呈现它 - 这是最简单的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-09
  • 2015-07-16
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
相关资源
最近更新 更多