0

所以在我的应用程序中,我有以下情况:

BackendCommunicatingClass ->(拥有)-> ModelClass ->(拥有)-> HomescreenViewController

  • HomescreenViewController 是 ModelClass 的委托。
  • ModelClass 是 BackendCommunicatingClass 的委托。

同样在应用程序第一次启动时,我有这个:

WelcomeViewController ->(拥有者)-> HomescreenViewController

  • HomescreenViewController 是 WelcomeViewController 的代表。

当用户在 WelcomeViewController 中输入用户名和密码时,这些信息需要一路获取到 BackendCommunicatingClass,然后一路返回到 WelcomeViewController 以在需要时显示错误。现在我已经通过将信息传递给通信链中的每个类来实现这一点,直到它到达 BackendCommunicatingClass。结果是协议方法有很多重复,我觉得我做错了。

你怎么看?

4

2 回答 2

1

好吧,我知道这不是最清晰的解决方案,但是没有看到代码和程序的目的,这就是我的建议。

  • 在后端视图控制器中实现键值观察(KVO),观察主视图控制器中的变化。一旦后端控制器检测到文本字段中的变化,通过主视图控制器中的专用变量,它就会触发它必须执行的所有操作。
  • 当后端完成时,它会发送一个带有操作结果的 NSNotification。您制作的主视图控制器正在收听此类自定义通知,对此做出反应并显示错误消息或其他人员。

听起来可能很复杂,但是 KVO 和通知很容易实现,并且网上有很多文档和教程。

于 2013-07-31T15:33:07.693 回答
0

如果这些委托协议提供的内容有明确的 1:1 映射,并且委托不处理 UI 内容,除了直接拥有的视图控制器之外,您可以将委托传递到链的末尾,然后直接将其设置为委托。这就是委托的用途——能够允许原本不关心的对象与另一个对象进行通信。

也就是说,根据分层策略的严格程度,您可能更喜欢通过不同的委托来封装每一步的信息。

于 2013-07-31T15:25:35.863 回答