2016-05-12 40 views
5

我一直在研究将模型视图演示者体系结构应用于新的iOS项目。经过一番阅读后,我发现这个post就是最好的例子。链接到代码here的原始要点。模型视图演示者和iOS(Swift)架构

的例子的底部有装配代码:

// Assembling of MVP 
let model = Person(firstName: "David", lastName: "Blaine") 
let view = GreetingViewController() 
let presenter = GreetingPresenter(view: view, person: model) 
view.presenter = presenter 

此外,笔者指出:

因为我们不希望查看了解的型号,它在呈现视图控制器(这是视图)中执行汇编是不正确的,因此我们必须在其他地方执行它。例如,我们可以创建应用程序范围的路由器服务,负责执行程序集和View-to-View演示文稿。

我的问题:

  • 我应该在哪里放置装配代码?
  • 我在哪里可以找到更多应用范围的示例路由器

回答

1

所以它不只是我是谁不知道这个;)

我想与大家分享我在iOS中关于向MVP其他发现:

Screencast by David Gadd - 这是一个有点长(1小时20分钟)和有点老(2012年12月),但肯定值得一看。你会在那里看到MVP是如何实现的(在AppCode中)一个非常小的应用程序(以及关于如何编写单元测试的相当好的描述)。在David David创建的应用中,路由器被称为ServiceLocator。不幸的是,我无法找到此截屏视频下载的代码(但可以在观看时创建自己的此应用程序版本)。

也许还有其他方法可以创建路由器,但这个屏幕录像帮助我更好地理解它。我对MVP概念非常陌生,并没有将它用在更大的应用程序中(大于单屏幕,让我们看看它如何完成应用程序)。这将是非常高兴看到MVP是如何在现实生活中的应用程序实现...

[编辑]

我刚刚意识到我没有回答你的第一个问题。

根据截屏路由器应用程序是一个类方法的类:

+ (id)resolve:(PresenterTypeEnum)type; 

在此方法的实现,你会发现简单的开关。基于类型发送参数方法将返回演示者的适当实例。

这种方法被称为viewDidLoad中。一旦你有一个主持人的实例,你只需要自己设置一个主持人的视图。

我希望这个解释清楚。无论如何,我强烈推荐观看屏幕投射,那么它应该清晰地表现为水晶;)

相关问题