【问题标题】:Segue always loads new instance of viewSegue 总是加载新的视图实例
【发布时间】:2012-06-29 08:46:23
【问题描述】:

我正在执行这样的转场;

[self performSegueWithIdentifier:@"showSecondView" sender:self];

但行为是它总是“加载”新视图,而不是显示已经加载的现有视图。

我的问题是,如何在加载视图后将其保留在内存中,以便将来的 segue 调用将简单地“显示”现有视图?

谢谢

编辑:

这是我的用户界面设计。它本质上是一个自定义的侧标签栏视图控制器,带有一个 UIView(大灰色块),所有子视图都放置在其中。

【问题讨论】:

标签: ios xcode uistoryboard


【解决方案1】:

简短的回答是 iOS 不太适合这种情况,但您或许可以这样做。视情况而定。

问题是该视图的控制器如何在视图控制器层次结构中表示。标准选项是pushViewController(推送转场)或presentViewController(模态转场)。您也许可以利用视图控制器包含的优势进行自定义 segue(请参阅WWDC 2011 session 102),但如果您想要这样做,我会感到惊讶。通常,当您听到人们谈论创建新视图的挫败感时,是因为他们想要返回某个主视图,但忽略了popToRootViewController,而是转而回到那个根场景。

一个完全理论上的(并且可能是不切实际的)答案可能是使用单例并做一些轻微的手来转换视图,但是在观看 WWDC 2011 会议 102 上的视图控制器遏制之后,他们痛斥了保持一个人的视图层次结构与视图控制器层次结构同步,所以我认为这没有意义。

如果我了解您想要的用户界面,我可能会提出更有意义的建议。对于 99% 的应用程序,它们围绕着推送/弹出视图、呈现/关闭模态视图或使用某些容器(例如标签栏容器或某些自定义容器)在同级视图之间跳转。您的用户界面流程是什么?

【讨论】:

  • 谢谢!看这个截图:cl.ly/2M0h2s2D0r1N1y403z3w——我基本上有一个自定义的侧标签栏,我所有的视图都通过一个自定义的 UIView 显示(中间的大灰色块)
  • 那我收回来。这看起来像是一个完美的视图控制器包含练习。我不知道它是否有帮助,但我发布了一个容器视图控制器的示例(它使用分段控件在子视图控制器之间跳转,但我认为您会看到它与您的内容之间的明显相似之处尝试做。见stackoverflow.com/questions/11171404/…
猜你喜欢
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 2017-02-10
  • 2012-05-26
  • 2022-12-22
相关资源
最近更新 更多