我正在努力尝试将UIView类中的委托返回给另一个类。
我有一个名为 Class1 的自定义UIView
子类,在其中我添加了另一个具有委托的自定义 func setModuleViewFor(index1:Int,index2:Int, delegating:UIView)
{
let tmodule = ModuleInput(frame: CGRect(x: 0,y: 0,width: self.frame.size.width,height: self.frame.size.height))
tmodule.setWithData(index1: index1,index2: index2)
tmodule.delegate= delegating //********error
self.addSubview(tmodule)
子类。
:
ModuleInput
哪个错误说:
无法将类型UIView的值赋给ModuleInputProtocol
通常,如果 tmodule.delegate= self
位于控件视图中,我会这样做:
super.onResume();
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) {
HomeFragment fragObj = new HomeFragment();
getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragObj)
.commit();
return true;
}
return false;
}
});
}
它有效。
答案 0 :(得分:3)
您必须使用ModuleInputProtocol
设置委派类型func setModuleViewFor(index1:Int,index2:Int, delegating:ModuleInputProtocol)
{
let tmodule = ModuleInput(frame: CGRect(x: 0,y: 0,width: self.frame.size.width,height: self.frame.size.height))
tmodule.setWithData(index1: index1,index2: index2)
tmodule.delegate= delegating //********error
self.addSubview(tmodule)
并且当您调用setModuleViewFor方法时,委托参数必须实现ModuleInputProtocol
add:protocol protocolBase {
}
protocol protocol0:protocolBase {
}
protocol protocol1:protocolBase {
}
protocol protocol2:protocolBase {
}
protocol protocol3:protocolBase {
}
protocol protocol4:protocolBase {
}
现在你可以写这样的功能
func setModuleViewFor(index1:Int,index2:Int, delegating:protocolBase)
我的英语非常糟糕,请理解