2016-12-22 3 views
0

Ich habe eine relativ einfache Frage. Ich habe eine Funktion erstellt - deckt den Inhalt ab, um Daten von der API abzurufen. Ich muss eine Funktion in mehreren verschiedenen Klassen aufrufen (will nicht duplizieren). Ich rufe diese Funktion an, aber nichts wird angezeigt. Wenn diese Funktion ein Teil der Klasse ist, in der ich sie aufrufen möchte, funktioniert sie korrekt. Wo ist das Problem, lass es mich wissen. (Ich denke in UIView ...)? Vielen Dank.Aufruf einer Funktion (die Variable enthält) in einer anderen Klasse

Meine Funktion:

func loadScreen() { 

     var loadView:UIView! 

     loadView = UIView(frame: self.view.frame) 
     loadView!.backgroundColor = UIColor.black 
     loadView!.alpha = 1.0 

     let actView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray) 
     actView.frame = CGRect(x: 0, y: 0, width: 20, height: 20) 
     actView.center = CGPoint(x: self.view.bounds.size.width/2 , y: self.view.bounds.size.height/2) 
     actView.startAnimating() 

     loadView?.addSubview(actView) 
     self.view.addSubview(loadView!) 
    } 

ich eine Funktion in einer anderen Klasse in viewDidLoad() aufrufen, aber wie gesagt, wird nichts angezeigt.

Antwort

2

zuerst eine Singleton-Klasse wie dieses

Singleton class

import UIKit 
    import Foundation 

class Singleton: NSObject 
{ 
    static let sharedInstance = Singleton() 

    override init() 
    { 
     super.init() 
    } 


    func placeBlockerView(target : UIViewController) 
    { 
     var loadView:UIView! 
     loadView = UIView(frame: target.view.frame) 
     loadView!.backgroundColor = UIColor.black 
     loadView!.alpha = 1.0 

     let actView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray) 
     actView.frame = CGRect(x: 0, y: 0, width: 20, height: 20) 
     actView.center = CGPoint(x: target.view.bounds.size.width/2 , y: target.view.bounds.size.height/2) 
     actView.startAnimating() 

     loadView?.addSubview(actView) 
     target.view.addSubview(loadView!) 
    } 
} 

Danach wird es von wo verwenden erstellen Sie jemals nach Bedarf wollen

wie diese

Singleton.sharedInstance.placeBlockerView(target: self) 

Diese oben li ne fügt diese UIView, die Sie erstellt haben, in die Ansicht Ihres View-Controllers ein.

Lassen Sie mich wissen, wenn es nicht funktioniert.

+0

Es funktioniert ;-). Vielen Dank – Alien

0

Anstatt es oben hinzuzufügen, wird immer empfohlen, return the UIView von dieser Methode und in Ihrer Unterklasse von UIViewController tun Sie Folgendes.

func viewDidLoad() { 
    let loadView = loadScreen() 
    self.view.addSubView() 
} 
Verwandte Themen