在另一个类中调用一个函数(包含变量)

时间:2016-12-22 07:54:04

标签: ios swift function class uiview

我有一个相对简单的问题。我创建了一个函数 - 覆盖内容以从API检索数据。我需要在几个不同的类中调用一个函数(不想复制)。我正在调用该函数,但没有显示任何内容。如果这个函数是我要调用它的类的一部分,它可以正常工作。问题在哪里,请告诉我。 (我想在UIView ......)?谢谢。

我的功能:

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!)
    }

我在viewDidLoad()中调用另一个类中的函数,但正如我所说,没有显示任何内容。

2 个答案:

答案 0 :(得分:2)

首先创建一个像这样的单例类

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!)
    }
}

之后,根据需要随时使用

像这样

Singleton.sharedInstance.placeBlockerView(target: self)

以上行将添加您已创建的UIView到视图控制器的视图。

如果它不起作用,请告诉我。

答案 1 :(得分:0)

不是在上面添加它,而是始终建议return the UIView从该方法和UIViewController的子类中执行以下操作。

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