2016-03-16 2 views
0

J'essaie de sous-classer UIVisualEffect mais j'ai des problèmes pour implémenter les bonnes méthodes init. Jusqu'à présent j'ai ceci:Problèmes sous-classe UIVisualEffect

import UIKit 

class BlurView: UIVisualEffect { 



    init(effect: UIVisualEffect?) { 
     super.init(effect) 
     print("Init 1 called") 

    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     print("Init 2 called") 
    } 



} 

Je reçois l'erreur: "Manquant le codeur d'argument dans l'appel". J'ai également essayé:

import UIKit 

class BlurView: UIVisualEffect { 



    init(effect: UIVisualEffect?) { 
     super.init() 
     print("Init 1 called") 

    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     print("Init 2 called") 
    } 



} 

Cela se plaint que je n'ai pas implémenté la méthode init. J'ai essayé de le faire mais je n'arrivais toujours pas à le faire fonctionner. Des idées sur la façon de mettre en œuvre ces méthodes? Merci!

Répondre

1

Il y a une faute de frappe, vous voulez sous-classer UIVisualEffectView, pas UIVisualEffect.
Ils sont différents UIVisualEffectView hérite de UIView et appliquer le UIVisualEffect que vous passez. UIVisualEffect est juste l'effet.

class BlurView: UIVisualEffectView { 
    override init(effect: UIVisualEffect?) { 
     super.init(effect: effect) 
    } 


    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
} 
+0

Merci! travaille maintenant – Kex