2016-10-11 3 views
0

Я стараюсь без успеха возвращать делегата из класса UIView в другой класс.Возвратить делегата через функцию?

У меня есть подкласс пользовательских UIView я сделал называется Class1 и внутри него добавить еще один пользовательский UIView подкласса, который имеет делегат.

в Class1:

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) 

Что дает ошибку говоря:

не может присвоить значение типа UIView в ModuleInputProtocol

Обычно, если ModuleInput находится внутри элемента управления вид, и я:

tmodule.delegate= self 

Это работает.

+0

Пожалуйста, отредактируйте вопрос, чтобы включить информацию о нескольких протоколах, которые вы прокомментировали в принятом ответе. – xpereta

ответ

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) 

и параметра делегирующей должны понимать ModuleInputProtocol при вызове setModuleViewFor метод

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) 

Мой английский очень плохой, пожалуйста, понимаете и

+0

Спасибо, проблема в том, что это может быть один из 5 видов делегатов, поэтому я хотел передать ему представление, которое получило бы делегат напрямую. – Curnelious

+0

вы можете просить так: я пишу больше в ответе –

Смежные вопросы