Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将Int值从一个VC传递到另一个VC_Ios_Swift4 - Fatal编程技术网

Ios 将Int值从一个VC传递到另一个VC

Ios 将Int值从一个VC传递到另一个VC,ios,swift4,Ios,Swift4,我试着按照这个使用字符串值的方法进行操作,但没有多大帮助。我正在开发一个有8个按钮的应用程序,每个按钮都会被分配一个数字,表示在CountdownVC中转换为分钟的秒数。当我点击一个按钮并将值分配给CountdownVC中的var seconds=0时,我试图传递Int值 按下MainVC中的按钮时: @IBAction func oneMinuteBtnPressed(_ sender: Any) { let vc = CountdownVC() vc.sec

我试着按照这个使用字符串值的方法进行操作,但没有多大帮助。我正在开发一个有8个按钮的应用程序,每个按钮都会被分配一个数字,表示在CountdownVC中转换为分钟的秒数。当我点击一个按钮并将值分配给CountdownVC中的
var seconds=0
时,我试图传递Int值

按下MainVC中的按钮时:

@IBAction func oneMinuteBtnPressed(_ sender: Any) {

        let vc = CountdownVC()
        vc.seconds = 60
        performSegue(withIdentifier: "toCountdownVC", sender: self)
    }
我想将分配的值传递给倒计时VC,使其
var seconds=60

import UIKit

class CountdownVC: UIViewController {

@IBOutlet weak var countdownLbl: UILabel!
@IBOutlet weak var startBtn: UIButton!
@IBOutlet weak var pauseBtn: UIButton!
@IBOutlet weak var resetBtn: UIButton!

// Variables
var seconds = 0 // This variable will hold the starting value of seconds. It could be any amount over 0
var timer = Timer()
var isTimerRunning = false // This will be used to make sure the only one time is created at a time.
var resumeTapped = false

override func viewDidLoad() {
    super.viewDidLoad()
    pauseBtn.isEnabled = false

}
func runTimer() {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(CountdownVC.updateTimer)), userInfo: nil, repeats: true)
    isTimerRunning = true
    pauseBtn.isEnabled = true
}
@objc func updateTimer(){
    if seconds < 1 {
        timer.invalidate()
        //TODO: Send alert to indicate "time is up!"
    } else {
        seconds -= 1 //This will decrement(count down) the seconds.
        countdownLbl.text = timeString(time: TimeInterval(seconds)) //This will update the label
    }
}
func timeString(time: TimeInterval) -> String {

    let hours = Int(time) / 3600
    let minutes = Int(time) / 60 % 60
    let seconds = Int(time) % 60
    return String(format: "%02i:%02i:%02i", hours, minutes, seconds)
}
导入UIKit
类倒计时VC:UIViewController{
@IBL弱var倒计时LBL:UILabel!
@IBOUTLE弱var startBtn:UIButton!
@IBOUTLE弱var pauseBtn:UIButton!
@IBOutlet弱var重置按钮:UIButton!
//变数
var seconds=0//此变量将保留秒的起始值。它可以是大于0的任何值
var timer=timer()
var isTimerRunning=false//这将用于确保一次只创建一个时间。
var=false
重写func viewDidLoad(){
super.viewDidLoad()
pauseBtn.isEnabled=false
}
func运行计时器(){
timer=timer.scheduledTimer(时间间隔:1,目标:self,选择器:(#选择器(CountdownVC.updateTimer)),userInfo:nil,repeats:true)
isTimerRunning=true
pauseBtn.isEnabled=true
}
@objc func updateTimer(){
如果秒数小于1{
timer.invalidate()
//TODO:发送警报以指示“时间到了!”
}否则{
秒-=1//这将减少(倒计时)秒数。
countdownLbl.text=timeString(time:TimeInterval(seconds))//这将更新标签
}
}
func timeString(时间:TimeInterval)->String{
让小时数=整数(时间)/3600
分钟数=整数(时间)/60%60
设秒=整数(时间)%60
返回字符串(格式:“%02i:%02i:%02i”,小时、分钟、秒)
}

除了segue部分,我上面所说的似乎不起作用。任何帮助都将不胜感激。

正如Quoc Nguyen所指出的,您正在为一个永远不会使用的控制器赋值

当您调用
performsgue
时,这将实例化与您创建的vc不同的vc

如果您想将故事板创建的内容传递给vc,则需要使用以下内容:

@IBAction func oneMinuteBtnPressed(_ sender: Any) {
        performSegue(withIdentifier: "toCountdownVC", sender: self)
}

 // This function is called before the segue
 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
     // get a reference to the your view controller
     if let nextViewController = segue.destination as? CountdownVC {
        nextViewController.seconds = 60
     }
 }

由于您的
让vc=CountdownVC()
CountdownVC
不同,您
执行了检查(标识符为:“toCountdownVC”
。RomOne、Quoc和Suragch,非常感谢您的帮助。您的共同努力帮助我更好地理解了我的问题。不用担心;)很高兴它有帮助。不要忘记投票或接受正确的答案,这样其他人就可以很快看到什么对给定的问题有帮助。