gpt4 book ai didi

ios - Swift - 来自另一个类的运行方法

转载 作者:行者123 更新时间:2023-11-28 07:07:50 25 4
gpt4 key购买 nike

我想知道如何运行另一个类的方法。例如,类似下面的代码:

let newVC: ScoreViewController = ScoreViewController()
newVC.makeScore()

上面的代码对我不起作用,因为在 makeScore() 中,我正在更改标签的文本,上面的代码无法执行此操作,因为它正在创建一个新实例。有没有一种方法可以在不创建新实例的情况下调用要运行的方法,以便我可以更改 makeScore() 中的标签文本?

编辑:

如何将 ScoreViewController 添加到 PageViewController:

let vc = storyboard.instantiateViewControllerWithIdentifier("Score") as! ScoreViewController
self.addChildViewController(vc)
self.scrollView.addSubview(vc.view)

最佳答案

我假设您在 FirstViewController 中有一些方法,您可以在其中更改分数并将其显示在 ScoreViewController 中。委托(delegate)模式是这个问题的可能解决方案。在您的 FirstViewController 中创建一个用于更新分数的协议(protocol),例如:

protocol FirstVCScoreDelegate:NSObjectProtocol {

func makeScore()
}

然后在您的 FirstViewController 中为这个委托(delegate)创建一个 var:

var delegate: FirstVCScoreDelegate

然后在您要创建 FirstViewControllerScoreViewController 实例的 PageViewController 中,设置 FirstViewController 的委托(delegate)ScoreViewController:

var firstVC: FirstViewController()
var scoreVC: ScoreViewController()
firstVC.delegate = scoreVC

在此之后,在 FirstViewController 中分数发生变化的方法中:

@IBAction func scoreChangeAction(sender: AnyObject) {

if delegate.respondsToSelector(Selector("makeScore")) {

delegate.makeScore()
}
}

这将通知 ScoreViewController 更新分数。您现在必须在 ScoreViewController 中实现委托(delegate)方法:

extension ScoreViewController: ScoreDelegate {

func makeScore() {
//update your label
}
}

我相信这会解决您的问题。

更新

在您的 PageViewControllerviewDidLoad: 方法中试试这个:

override func viewDidLoad() {
super.viewDidLoad()

let mainStoryboard = UIStoryboard(name: "MainStoryboard", bundle: NSBundle.mainBundle())

let firstVC : FirstViewController = mainStoryboard.instantiateViewControllerWithIdentifier("firstVC") as FirstViewController

let scoreVC : ScoreViewController = mainStoryboard.instantiateViewControllerWithIdentifier("scoreVC") as ScoreViewController

firstVC.delegate = scoreVC

self.addChildViewController(firstVC)
self.addChildViewController(scoreVC)

self.scrollView.addSubview(firstVC.view)
self.scrollView.addSubview(firstVC.view)
}

关于ios - Swift - 来自另一个类的运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29788576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com