2014-09-30 59 views
1

在我的iOS应用程序中,我在其中一个视图上有一个视图控制器和一个UITableView子类。目前UITableView管理它自己的数据(创建连接,并成为处理回调的委托)。我应该运行哪些类的异步调用?

我想知道这是否是最佳做法?在视图控制器上运行它并将数据传递到表中是否更好?这完全不重要吗?

请解释除了回答我的问题之外的原因。

谢谢!

回答

2

ViewController中实施delegatedataSource方法会更加标准。

UI*View类进行子类化很不寻常,除了要自定义绘图。 UITableViewCell对此规则有点例外。

如果你发现你的ViewController有点大,你可能会考虑在一个单独的类中实现委托和数据源。

0

除了mcfedr的回答,视图是与用户交互的东西,通常很好地分离概念(除非不可避免)。另请注意,历史版本的ios(iirc)视图控制器可能会按需加载/卸载视图,因此其中的任何应用程序逻辑可能不再存在。

0

在这种情况下,我一般都只有一个类......包含以下视图层次的UIViewController的实例:

  • 视图 - > myTableView

通过这种方法,我会的UIViewController :

  • 有一个IBOutlet到一个UITableView(myTableView)
  • 进出口的UITableViewDelegate的字元素的方法
  • 实施
  • 设置myTableVIew.delegate自我UITableViewDatasource的方法
  • 设置myTableView.datasource自我

当主机的UIViewController是你UIViewContoller的委托和数据源,所有代码可以存在于一个班级中。这可以让你的项目代码更紧密,但是却能够紧密结合你的逻辑。

另一种方法是继承UITableView并实现UITableViewDelegate和UITableViewDatasource。这将是一个可取的办法,如果:

  • 你想重用的UITableView在多个UIViewController中
  • 你想从UIViewController中封装的UITableView逻辑

这里是思想过程中,我使用:

  • 我打算重用这个UITableView及其逻辑吗?
    • 是 - > UIViewController类和UITableView的子类
    • 否 - > UIViewController类只

最佳做法是依赖于程序员的参与人数,UITableView中的重复性,编码模式已经建立。这往往是一个偏好问题,我希望我的回答揭示了为什么你会去任何一种方式,

+0

我一直在单独的课上做这个的原因是因为在一些页面上我有两个相邻的桌面视图并且委托调用需要不同。 – user3583341 2014-09-30 14:38:53

+0

这将是继承UITableView的另一个原因。您可以将UIViewController作为多个UITableView的委托/数据源,但每种方法都必须执行条件逻辑,更重要的是,您将被迫在两者中实现相同的方法,这可能会导致不理想的结果。为了您的目的,我认为您已经选择了最佳做法。 – dgangsta 2014-09-30 15:47:52

相关问题