2017-01-28 4 views
1

J'ai fait fichier d'extension comme ceci:Comment créer un fichier d'extension et l'appeler dans View Controller dans iOS Swift 3?

import Foundation 
import Swift 
import UIKit 

extension UIButton{ 
func sayHello() { 
     print("Hello bro...") 
    } 
} 

enter image description here

et ensuite appeler la méthode sayHello dans le contrôleur de vue comme celui-ci:

override func viewDidLoad() { 
     super.viewDidLoad() 
     sayHello() 
    } 

Mais montrer cette erreur:
enter image description here

Je pense que ce problème s'est accumulé cause de l'importation de fer du fichier d'extension dans le contrôleur de vue.
S'il vous plaît aidez-moi.
Merci.

+0

Vous créez méthode d'instance en extension et Tring appeler comme des méthodes de classe –

+0

Soit vous devez ajouter le mot-clé 'class' avant' func' ou vous devez changer l'extension de 'UIButton' à' UIViewController' –

Répondre

2

Votre mise en œuvre est erroné. Vous créez l'extension de UIButton et appelez une méthode sur UIViewController.

extension UIViewController { 
func sayHello() { 
     print("Hello bro...") 
    } 
} 

Si vous voulez créer un UIButton l'extension

extension UIButton { 
    func sayHello() { 
      print("Hello bro...") 
     } 
    } 

alors vous devrez appeler sur UIButton comme ci-dessous

let button = UIButton() 
button.sayHello() 
+1

@LeoDabus Mis à jour ma réponse. –

2

utilisation extension UIViewController pas utiliser UIButton

ci-dessous Code se UIButton si

someButton.sayHello() est fonctionne

extension UIButton { 
    func sayHello() { 
     print("Hello bro...") 
    } 
} 

si vous voulez utiliser dans viewDidLoad() de UIViewController s'étendre à la place UIViewController UIButton

extension UIViewController { 
    func sayHello() { 
     print("Hello bro...") 
    } 
} 

il travaille dans 'viewDidLoad'

ceci est une extension par exemple pour appeler alerte

ex)

extension UIViewController { 
    func alert(title: String, message: String) { 
     let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) 
     alertController.view.tintColor = .black 
     let someAction = UIAlertAction(title: "Some", style: .default, handler: nil) 
     let alertController.addAction(someAction) 
     self.present(alertController, animated: true, completion: nil) 
    } 
}