代码之家  ›  专栏  ›  技术社区  ›  titaniumdecoy Mr. T

UIViewController在iPad上的UIView内部

  •  2
  • titaniumdecoy Mr. T  · 技术社区  · 14 年前

    尽管有这个问题的标题,我很清楚UIViewControllers不能放在UIViews中。

    根据苹果的文档,UIViewControllers控制iPhone应用程序的全屏。不过,在iPad上,它们还可以用来控制popover的内容、拆分视图以及全屏显示。

    在我的设计中,许多非常复杂的视图,每一个都有自己的UIViewController,将在屏幕中央一个iPhone大小的矩形中进行交换。如果我使用弹出式窗口,这将是微不足道的,但我不希望箭头或黑色边框随附。

    我想到了两种处理这种情况的可能性:

    • 将视图控制器放置在新的UIWindow中
    • 对这些视图使用不从UIViewController继承的控制器类

    以下哪种方法最不可能引起未来的头痛?请让我知道,如果有更好的方法来做这件事,我没有想到。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Ben Zotto sberry    14 年前

    我使用的控制器类不是继承自 UIViewController . 无法在UI层次中任意嵌套实际的视图控制器是SDK中的一个不幸的不公平,但我发现,即使具有真正复杂度的人造控制器也是可以管理的。必要时,我只需仔细查看来自真正的根控制器的关键消息,然后以类似的方式构造代码,就好像它是一个真正的视图控制器一样。这基本上也是苹果的推荐。(目前找不到文档引用。)

    如果您有很多这样的子屏幕可管理视图,那么您可能会构建一个非常灵活的、可以继承自继承人的类,然后继承一个从MyViewControllers继承的继承器,它知道如何生成并为您恰当地设置所有消息。(我自己还不需要这种抽象级别。)

    使用子屏幕大小的UIWindows并不是一个标准的解决方案,我会小心的。类似地,不要试图直接攻击并使用UIViewControllers。你会发现,如果你这样做,他们有时会表现,有时行为不端,你会浪费很多时间来整理这种脆弱的互动。

        2
  •  1
  •   BastiBen    14 年前

    根据个人经验,我建议如下:

    对于每个“逻辑单元”或模块,例如消息列表、消息生成器视图和文件夹列表;创建自己的UIViewController和.nib文件。

    试着将每个模块的代码分开,这样就不需要通过在它们之间提供清晰的接口了解其他模块的很多或任何细节。

    有一个“主控制器”,跟踪所有视图的所有实例以及它们的显示方式/时间。

    对我来说,它省去了很多麻烦,特别是如果你想在iPhone和iPad应用程序中使用大多数相同的代码库。

    Overview

        3
  •  0
  •   WrightsCS    14 年前

    你可以把一个UINavigationController放在一个popover里面

    推荐文章