Dav*_*lar 5 delegates objective-c uiview ios xamarin
我只是想清除一些与委托模式的混淆,当有多个UIViews和这些视图的子视图时应该构建它.为了说清楚,让我们定义一些变量.
让我们将这些对象定义为:
- 视图控制器
A- 的UIView
B- 子视图
C
现在,我理解委托模式是如何工作的(我认为),虽然我不确定如何在嵌套的UIViews中实现这种模式.我有一些问题是:
应该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.
我知道您可以使用UIViews之间的共享对象来解决大多数情况,但是当谈到网络服务时,需要通过某种回调来检索这些值.
我需要进一步澄清,请告诉我.任何帮助是极大的赞赏.
所以,你有这样的情况:
ViewController A - >视图B - >视图C.
我会尽量保证我ViewController A需要决策都View B与View C这样的:
ViewDelegate,View B并View C
在其中保留和委托方法.@property (nonatomic, weak) id <ViewDelegate> delegate;在View B.@property (nonatomic, weak) id <ViewDelegate>
delegate;在View C.ViewController A实例化View B设置self为委托时.喜欢viewBObj.delegate = self.View B实例化View C设置self.delegate为委托时.喜欢viewBObj.delegate = self.delegate.ViewController A响应View B和View C委托事件.| 归档时间: |
|
| 查看次数: |
3909 次 |
| 最近记录: |