推送视图控制器不显示从情节提要添加的元素

Posted

技术标签:

【中文标题】推送视图控制器不显示从情节提要添加的元素【英文标题】:Push View Controller not showing elements added from storyboard 【发布时间】:2012-08-26 14:37:02 【问题描述】:

好的,到目前为止,我的故事板中有两个视图控制器。一个带有“登录”元素,另一个是“用户的家”之类的东西。我打算做以下事情:当用户点击登录时,有一些处理,然后它应该显示到用户的主屏幕..

当我通过情节提要执行此操作时,我的意思是 = 控制将“登录”按钮拖动到用户的主视图,它工作正常。但我不能使用它,因为我必须处理登录数据。同时它还显示了一些动画。所以,我必须以编程方式进行这种转变。我在登录按钮的 IBAction ::

中编写了以下代码
HomeViewController *homeView = [[HomeViewController alloc] init];

[self presentViewController:homeView animated:YES completion:NULL] ;

现在,这会将用户带到预期的视图。但是,主视图中的元素(比如标签,导航栏没有显示出来。这就是我担心的。 (理论上,我可以以编程方式构建整个视图,但我认为这不是正确的方法,是吗?我想充分利用情节提要功能,即在情节提要中设计最大的 UI 并从后端以您想要的方式使用它们他们工作。)

我该怎么做?

干杯。

PS:我打算添加更多视图控制器,所以目前我没有想到导航控制器。不确定,如果我应该使用它。

【问题讨论】:

【参考方案1】:

使用你应该使用的故事板:

UIViewController *homeView = [self.storyboard instantiateViewControllerWithIdentifier:@"someID"];
[self presentViewController:homeView animated:YES completion:NULL] ;

然后将 ID 设置为情节提要中的视图控制器,如下所示:

此外,如果您愿意,完全用代码设计 UI 绝对没有错。我个人更喜欢它。它为您提供比界面生成器更大的灵活性。

【讨论】:

【参考方案2】:

除了NSPostWhenIdle的instantiateViewControllerWithIdentifier的建议外,还可以在两个视图控制器之间定义一个segue(不是在按钮和第二个控制器之间,而是在两个视图控制器之间):

然后给segue一个唯一的标识符,然后让你的IBAction方法执行performSegueWithIdentifier。这样,您的故事板将继续以视觉方式表示您的视图控制器之间的各种关系。

【讨论】:

谢谢。不幸的是,我无法将两个答案都标记为“已回答”。 嘿,伙计……我试过了……但他们说我没有足够的“声誉”……我只是有办法。 :) 再次感谢您的帮助。

以上是关于推送视图控制器不显示从情节提要添加的元素的主要内容,如果未能解决你的问题,请参考以下文章

添加情节提要参考时,标签栏控制器项目上不显示任何内容

UISplitViewController 推送新的细节控制器,不更新侧面细节

为啥使用情节提要在 UIScrollView 中不显示内容

推送视图控制器后从情节提要加载视图

如何显示登录和关闭设置 - 情节提要

何时将子视图从情节提要添加到超级视图?