Ios UIView&;子视图代理
我只是想澄清我对委托模式的一些困惑,当存在多个UIView和这些视图的子视图时,应该构建委托模式。为了清楚起见,让我们定义一些变量 让我们将这些对象定义为:Ios UIView&;子视图代理,ios,objective-c,uiview,xamarin,delegates,Ios,Objective C,Uiview,Xamarin,Delegates,我只是想澄清我对委托模式的一些困惑,当存在多个UIView和这些视图的子视图时,应该构建委托模式。为了清楚起见,让我们定义一些变量 让我们将这些对象定义为: ViewControllerA ui查看B 子视图C 现在,我理解了委托模式的工作原理(我认为),尽管我不确定如何在嵌套的UIView中实现该模式。我有几个问题: C是否应该包含由其超级视图(B)实现的委托 如果是,是否应该B然后将此信息传递给它的代理ViewController(A) 这里有一个场景,假设C有一个UITextView,
- ViewController
A
- ui查看
B
- 子视图
C
C
是否应该包含由其超级视图(B
)实现的委托
如果是,是否应该B
然后将此信息传递给它的代理ViewController(A
)
这里有一个场景,假设C
有一个UITextView,这个文本视图的高度由从API服务获取的字符串决定B
无权访问API,因为此作业应通过ViewController(A
)完成
应C
然后包含一个代表,该代表指向:
A
)委托实现B
)委托实现B
然后调用ViewController(A
),并通过一系列事件传递此信息
这里有一个小的视觉效果:
A
因此,您遇到的情况如下:
视图控制器A-->视图B-->视图C
我将尝试确保我的视图控制器A
对视图B
和视图C
做出如下决定:
ViewDelegate
,并同时保留viewB
和viewC
委托其中的方法@property(非原子,弱)id委托代码>在视图B中
@property(非原子,弱)id
代表代码>在视图C
中
视图B时,从视图控制器A
将自身设置为代理。像viewBObj.delegate=self
视图C
时,从视图B
将自我委托设置为委托。比如viewBObj.delegate=self.delegate
ViewController A
同时响应View B
和View C
委托事件委托是函数指针。使用它,可以很容易地调用另一个类的函数 要创建委托,常见的过程是,首先创建协议并在其中添加相关方法(在要启动委托方法的类中)。这种方法可以通过采用协议的类来实现 您还需要创建称为委托属性的协议类型的泛型属性。这将被分配给符合协议的类的实例 在您的例子中,类B和类C中定义了一些协议。这里,B符合C类协议,A类符合B类协议 现在,类B中定义了类c的对象。在类B中,这里我们需要将类C的委托分配给B的实例(self)。(现在在c类中,委托属性包含B的实例,可以很容易地从c类调用在B类中实现的协议方法) 同样的情况也发生在类A和B中,其中可以从类B调用类A的方法(在类B的协议中定义) 下面是通过A->B->C实现委托链的概述 A类 符合协议B 它有B类对象 将类A(自身)的实例分配给类B的委托属性 在类A中,实现类B中定义的协议方法 B类 用方法定义协议 定义用作委托实例的泛型类型的属性 符合协议C 它具有类C的对象 将类B(self)的实例分配给类C的委托属性 在B类中,实现C类中定义的协议方法 C类 用方法定义协议 定义用作委托实例的泛型类型的属性 我希望这将有助于您了解委派在iOS中的工作方式 现在,您可以将类B和类C的协议整合到类A中(如果您不想对类B进行任何修改,只需调用上层的委托方法即可)。 见下文概述 A类 符合协议B 它有B类对象 将类A(自身)的实例分配给类B的委托属性 在类A中,实现类B中定义的协议方法 符合协议C 它有C类对象到B类对象 将类A(自身)的实例分配给类C的委托属性 在类A中,实现类C中定义的协议方法 B类 用方法定义协议 定义用作委托实例的泛型类型的属性 C类 用方法定义协议
定义充当委托实例的泛型类型属性我认为您可以单独创建.h文件并在该类中创建协议。无论您想在何处实现这些协议方法,导入.h类并声明协议并实现该方法。您可以通过创建协议对象从任何地方调用。是的,我理解这一点,但在我的情况下,视图C嵌套在视图B中。按照您将如何拥有包含UITableView的UIView,在这种情况下UIView将实现该委托正确吗?虽然这似乎是控制员的工作。不。还有您的
ViewController A
应该是UITableVi的委托