【发布时间】:2015-09-29 04:37:23
【问题描述】:
我只是想澄清一下我对委托模式的一些困惑,当这些视图有多个 UIView 和 Subview 时应该构建委托模式。为了清楚起见,让我们定义一些变量。
让我们将这些对象定义为:
- 视图控制器
A- UIView
B- 子视图
C
现在,我了解了委托模式的工作原理(我认为),尽管我不确定如何在嵌套的 UIView 中实现此模式。我的一些问题是:
C 是否应该包含由其超级视图 (B) 实现的委托?
如果是,B 是否应该将此信息传递给它的委托 ViewController (A)?
这是一个场景,假设C 有一个 UITextView,这个文本视图的高度由从 API 服务获取的字符串确定。 B 无权访问 API,因为这项工作应该通过 ViewController (A) 完成。
C 应该包含一个指向:
- ViewController 的 (
A) 委托实现?- UIView 的 (
B) 委托实现?- 其他?
如果答案是 (2),那么 B 是否应该调用 ViewController (A) 并通过一系列事件传递此信息?
这是一个小的视觉效果:
A <IBDelegate> B <ICDelegate> C 呼叫Delegate.OnApiComplete(float height);
在这种情况下,“代表”是什么? (ICDelegate 或 IBDelegate)。事件链是什么?
我只是想避免任何不必要的逻辑渗透到 UIView 中,而责任应该在控制器上。
我知道你可以通过 UIView 之间的共享对象来解决大部分场景,但是当涉及到网络服务时,这些值需要通过某种回调来检索。
我需要进一步澄清,让我知道。非常感谢任何帮助。
【问题讨论】:
-
我认为您可以单独创建 .h 文件并在该类中创建协议。无论您想在哪里实现这些协议方法,导入 .h 类并声明协议并实现该方法。你可以通过创建协议对象从任何地方调用。
标签: ios objective-c uiview xamarin delegates