【发布时间】:2013-03-12 13:49:17
【问题描述】:
应用代理能否充当整个应用的所有 UIViewController 之间的粘合剂?
我正在创建一个邮件客户端,其导航结构非常类似于sparrow(和 fb 等)。第一个屏幕将是一个登录屏幕.. 然后将导致一个UITableViewController 具有famous 左侧菜单按钮,如果单击它会显示下面的其他 VC。
长话短说,现在是我的应用程序代表在运行这个节目。它决定是否在第一次访问时显示登录屏幕,或者默认邮箱及其subviews。如果我从一个子视图中获取信息,它会将该信息传递给应用程序委托,后者又将其传递给其他视图控制器。
从 MVC 的角度来看,这是正确的吗?我知道应用程序代表是第一个联系点,它是启动应用程序的原因,但我还没有看到它广泛使用它。我只是想确定我是否在此处遵循 iOS MVC 最佳实践。
【问题讨论】:
-
不,这不是一个好主意。应用程序委托是放置通知、库初始化代码的地方,但仅此而已!使用故事板和其他更新的objective-c 功能来管理您的控制器层次结构。
-
不是完全重复的,但在这里stackoverflow.com/q/9213134/97337 和stackoverflow.com/a/829591/97337 回答(简短的回答是不,这不是正确的MVC)
-
我正在建立一个旧图书馆,该图书馆是在故事板时代之前创建的......它有大约 50 个 xibs.. 将所有这些转换为故事板本身就是一个新项目。您能否更具体地介绍一下 Objective-c 的其他新功能?希望我仍然可以在基于 xib 的项目中使用的东西..
-
@RobNapier 复习答案.. 似乎这件事不像看起来那么黑白分明.. 我发现this 的答案特别有趣,包括实现协议和
IBOutlets等。 . 你对这种范式有强烈的感觉吗? -
另一个准则:如果任何实现文件超过 500 行,您应该强烈询问它是否做得太多。在我的经验中,AppDelegate 是最常见的,超过 500 行,因此受到最严格的审查。
标签: ios objective-c model-view-controller design-patterns uinavigationcontroller