【问题标题】:How to structure my iOS code?如何构建我的 iOS 代码?
【发布时间】:2015-05-26 12:54:58
【问题描述】:

我有一个相当复杂的设置,并且正在寻找有关如何构建我的代码的建议。当您按下用户图像之一并可以在它们之间滑动时,我正在尝试做的是类似于 twitter 的事情。这是我目前拥有的:

  • UIViewController 子类从服务器收集数据,并通过名为 theData 的变量将其传递给 UITableViewController 子类
  • 这个UITableViewController 子类还在用户滚动到表格视图底部并将其附加到theData 时收集更多数据(即使用分页)。这个UITableViewController 子类在整个应用程序中重复使用,以便可以将来自不同来源的数据传递给它。
  • 当用户单击UITableViewCell 时,会创建一个UIWindow,其中包含UIPageViewController。窗口使用UITableViewController 作为访问theData 的委托,并将theData 从委托传递给UIPageViewController 在名为pageData 的变量中
  • UIPageViewController 的每一页都是一个UIViewController,它从pageData 加载图像

下一阶段是在用户滑动到UIPageViewController 中的pageData 末尾时进行分页。但是我认为我的代码结构不够好,无法重用UITableViewController 中的分页代码。请问有人能给我建议如何改进这个代码结构吗?

谢谢

编辑

第一个要点中的UIViewController 不仅仅用于下载数据(其中还有其他视图)。

我使用UIWindow 封装UIPageViewController,因为我希望它从UITableViewCell 的框架扩展并“接管”全屏 - 覆盖状态栏。

【问题讨论】:

  • 您不需要创建UIWindow,已经有一个,您只需实例化一个新的UIViewController 或其子类并将其呈现/推送到导航堆栈上。我认为我们帮不上什么忙,因为我们不知道您的代码在多大程度上是“非结构化”来提供解决方案的
  • 这可能更适用于程序员或代码审查
  • 有一个更简单的解决方案。转到 github(或其他类似站点)并搜索并找到可用于照片浏览的众多现有库之一。
  • 好问题!我期待着阅读明智的答案。

标签: ios code-structure


【解决方案1】:

我的建议是创建可用于与服务器通信的简单服务。你不需要 View 控制器。

此外,您还可以创建静态方法,这些方法将为您提供theData,而无需将其传递给整个应用程序。

关于滑动,您可以将 3 个用户放在一个数组中,并对应于滚动、加载额外的用户和释放不需要的用户。这将有助于您使用内存(如果用户滑动浏览 50 个或更多用户)。

而不是UIWindow,创建从UITableViewController 到DetailView 的简单segue,或者在您的情况下,UIPageViewController

【讨论】:

  • 您好,尼克,感谢您的回答!我已经更新了我的答案,以提供有关使用 UIViewController/UIwindow 的更多信息。当您说服务时,这会是与服务器交互的单独的类/公共函数吗?
  • 对于 uiwindow - 你仍然不需要它。您将有另一个视图控制器来显示数据,并且您可以选择隐藏您想要的任何内容。你想在牢房里。对于服务 - 是的,您可以创建简单的 NSObject 来处理与服务器的通信,这样您将拥有用于获取数据的单独逻辑,并且您可以在任何地方重用它而无需复制代码。
  • 好的,谢谢。您能否再解释一下/将我链接到一篇关于静态方法如何访问theData 的文章?如果theData 存储在类的实例中,静态方法将如何访问它?
  • 那么您可以将它们作为普通属性访问,例如:self.singleton.theData。您可以创建单例类:galloway.me.uk/tutorials/singleton-classes 并一遍又一遍地重用相同的属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 2012-03-11
相关资源
最近更新 更多