【问题标题】:Change a Object of a ViewController from a other Class in Swift从 Swift 中的其他类更改 ViewController 的对象
【发布时间】:2020-07-17 18:00:42
【问题描述】:

在过去的两周里,我尝试用 Swift 解决这个问题。

我对 Swift 和开发 IOS 应用程序很陌生。我想从其他类更改标签的属性。我从 Java 等其他语言中知道,您可以获取类的实例并从外部更改标签。但我不知道如何在 Swift 中执行此操作,因为我不知道 ViewController 在何处以及如何创建为 Object。

我有很多源代码。这就是为什么我创建了一个简单的 Game 和 ViewController 类来向您展示我的问题。

class ViewController: UIViewController {

    @IBOutlet weak var Points1: UILabel!
    var game = Game()

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
class Game {
   
    func IncrementPoints() {
        //Here I want to Increment the Points by getting the Label from the ViewController
    }
}

在我的代码中,更改标签或从外部访问标签非常重要。 在这个简单的示例中,可以在 ViewController 中执行此功能,但这是不可能的。

如果有人可以帮助我,我会很高兴:)

【问题讨论】:

    标签: ios swift viewcontroller


    【解决方案1】:

    这不是一个好方法,但有更好的方法来做到这一点。但是如果你想在游戏中访问标签,你需要将当前视图控制器作为参数传递给函数

    class Game {
        weak var parentVC: ViewController?
        var points = 0
    
        func setVC(vc:ViewController){
           self.parentVC = vc
        }
        
        func incrementPoints(by value: Int) {
            points += value
            parentVC?.points1 = "\(points)"
        }
    }
    

    并且在 viewController 中将 self 作为参数传递

    class ViewController: UIViewController {
    
        @IBOutlet weak var Points1: UILabel!
        var game = Game()
    
        override func viewDidLoad() {
            super.viewDidLoad()
            game.setVC(vc:self)
        }
    }
    

    【讨论】:

    • 感谢您的回答!您完全正确,这种方式不是一个好的解决方案。但它在第一种情况下解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2021-05-09
    • 2013-06-12
    • 2020-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多