2017-11-15 1 views
1

Ich versuche, einen ganzen Haufen Code in meiner Schaltfläche in eine einzige Datei zu verschieben. Hier ist der Knopf in meinem ursprünglichen VCInstanz Member 'showSettings' kann nicht auf den Typ 'SettingsLauncher'

let blackView = UIView() 
    let settingsLuancher = SettingsLauncher() 

    @IBAction func refreshBtnAction(_ sender: UIButton) { 

     SettingsLauncher.showSettings() 

    } 

Und hier ist die SettingsLauncher.swift,

import Foundation 
import UIKit 

class SettingsLauncher:NSObject { 

let blackView = UIView() 

func showSettings() { 
    if let window = UIApplication.shared.keyWindow{ 
     blackView.backgroundColor = UIColor(white: 0, alpha: 0.5) 
     window.addSubview(blackView) 
     blackView.frame = window.frame 
     blackView.alpha = 0 

     blackView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleDismiss))) 

     UIView.animate(withDuration: 0.2, animations: { 
      self.blackView.alpha = 1 
     }) 
    } 

} 

func handleDismiss(){ 
    UIView.animate(withDuration: 0.2, animations: { 
     self.blackView.alpha = 0 
     // dismisses blackView 
    }) 
} 

Die Kompilierung hält versagt und es zeigt: Instanz Mitglied ‚showsettings‘ kann nicht auf Art verwendet werden 'SettingsLauncher'; meinst du, stattdessen einen Wert dieses Typs zu verwenden?

Nicht sicher, warum das passiert ist, jede Hilfe geschätzt.

Antwort

1

Sie sind mit dem Klassennamen SettingsLauncher, statt auf Objekt settingsLuancher:

SettingsLauncher.showSettings() 

sollte

sein
settingsLuancher.showSettings() 
+0

Dank! Nun, das war ein unvorsichtiger Fehler ... – Kei

2

bei SettingsLauncher.showSettings() Schauen Sie, es ist nicht Klassenmethode es Instanzmethode so wird es durch Beispiel genannt werden von Klasse nicht Klasse selbst.

wie unten

settingsLuancher.showSettings() 
+1

Vielen Dank für die Beantwortung meiner Frage! Leider kann ich nur eine Antwort wählen, aber Ihre Lösung wird sehr geschätzt! – Kei

Verwandte Themen