来自其他viewController的func的值

时间:2017-02-21 17:29:53

标签: ios swift viewcontroller

我试图写一个简单的点击器,但我有一些问题,在" StartViewController"我有func value()它每秒添加1 +点击1 +最后一次保存值我shopViewController我有shopViewController我按下按钮它必须给+1(每次)单击,但如何从func value()访问当前值?当我尝试获得当前值时,我得到零

func value() -> Float {
    let endValue = appPerSec + valueToLoad + click
    valueToSave = endValue
    valueLable.text = "\(endValue)"
    return valueToSave
}

// shopViewController

var StartView:StartViewController!
var currentValue:Float! = 0.0
@IBAction func testAdd(_ sender: Any) {
     currentValue = StartView.value // here I get NIL
     print(currentValue)
}

2 个答案:

答案 0 :(得分:1)

我没有UnderStand你的问题,但我可以为我可以阅读的条款提供部分解决方案,或者请改进你的问题,以便我能够准确理解你在寻找什么。

同时我只是给出一些我认为你正在寻找的概念,如果没用,请在评分之前编辑你的问题没用:

制作一个可以使用的计时器

 @IBOutlet weak var timeInTimer: UILabel!

 var timer = Timer()

@IBAction func buttonPressed(_ sender: Any) //to stop the timer
{
    timer.invalidate()
}

@IBAction func playButtonPressed(_ sender: Any) //to start the timer
{
     timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(ViewController.processTimer), userInfo: nil, repeats: true)
}

将数据从一个视图传递到另一个视图:

let anyObjectName = storyboard?.instantiateViewController(withIdentifier: "IdentifierOfSecondViewController") as! IdentifierOfSecondViewController
                        anyObjectName.userName = userName //where username is a variable in second view

答案 1 :(得分:0)

您可以使用代理和协议。在您的shopView上方添加:

protocol ShopProtocol{
    func updateCount();
}

在你的shopView中添加:

var delegateShop:ShopProtocol?

当您更改该变量时,请转到:

delegateShop.updateCount()

在主视图控制器中,当您呈现此shopViewController时(在呈现它之前),添加:

shopController.delegateShop = self

将ViewController定义更改为

class ...: UIViewController, ..., ShopProtocol{

当然,在该视图控制器中创建:

func updateCount(){
 //do Stuff
}