【问题标题】:Calling a function (containing variable) in another class在另一个类中调用函数(包含变量)
【发布时间】:2016-12-22 07:54:03
【问题描述】:

我有一个相对简单的问题。我创建了一个函数 - 涵盖从 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()中调用了另一个类中的一个函数,但是正如我所说,什么都没有显示。

【问题讨论】:

    标签: ios swift function class uiview


    【解决方案1】:

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

    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 添加到视图控制器的视图中。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-21
        • 1970-01-01
        • 1970-01-01
        • 2018-04-29
        • 2018-04-01
        相关资源
        最近更新 更多