Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
Swift Can';使用segue将值从第一个VC传递到第二个VC_Swift_Macos_Segue_Swift4_Nsslider - Fatal编程技术网

Swift Can';使用segue将值从第一个VC传递到第二个VC

Swift Can';使用segue将值从第一个VC传递到第二个VC,swift,macos,segue,swift4,nsslider,Swift,Macos,Segue,Swift4,Nsslider,我有两个ViewControllers通过Showsegue连接。我需要将NSSlider的值从ViewController传递到SecondViewCotroller 因此,在ViewController中移动滑块,变量将在SecondViewController中更新 如何更新imagesQty变量的值 // FIRST VIEW CONTROLLER import Cocoa class ViewController: NSViewController { @IBOutlet

我有两个
ViewControllers
通过
Show
segue连接。我需要将
NSSlider
的值从
ViewController
传递到
SecondViewCotroller

因此,在
ViewController
中移动滑块,变量将在
SecondViewController
中更新

如何更新
imagesQty
变量的值

// FIRST VIEW CONTROLLER

import Cocoa

class ViewController: NSViewController {

    @IBOutlet weak var slider: NSSlider!
    @IBOutlet weak var photosLabel: NSTextField!

    @IBAction func segueData(_ sender: NSSlider) {
        photosLabel.stringValue = String(slider.intValue) + " photos"
        self.performSegue(withIdentifier: NSStoryboardSegue.Identifier(rawValue: "SegueIdentifierForSecondVC"), sender: slider)
    }

    func prepare(for segue: NSStoryboardSegue, sender: NSSlider?) {
        if segue.identifier!.rawValue == "SegueIdentifierForSecondVC" {
            if let secondViewController =
            segue.destinationController as? SecondViewController {
                secondViewController.imagesQty = slider.integerValue
            }
        }
    }
}


无法更改该值,因为var是在函数中定义的,而不是在类中定义的

将您的var设置为类属性,它应该可以工作

class SecondViewController: UIViewController {

var imagesQty: Int = 30

...

}

无法更改该值,因为var是在函数中定义的,而不是在类中定义的

将您的var设置为类属性,它应该可以工作

class SecondViewController: UIViewController {

var imagesQty: Int = 30

...

}

首先,
NSStoryboardSegue.Identifier
的目的和好处是创建一个能够避免文本的扩展

extension NSStoryboardSegue.Identifier {
    static let secondVC = NSStoryboardSegue.Identifier("SegueIdentifierForSecondVC")
}
然后你就可以写了

self.performSegue(withIdentifier: .secondVC, sender: slider)


发生此错误的原因是
imagesQty
view中声明将出现
,而不是出现在类的顶层

换成

class SecondViewController: NSViewController {

    var imagesQty = 30 // Int is inferred

    // override func viewWillAppear() {
    //     super.viewWillAppear()
    // }
}
还有一个错误:
prepare(for segue
的签名错误。它必须是

func prepare(for segue: NSStoryboardSegue, sender: Any?) {

首先,
NSStoryboardSegue.Identifier
的目的和好处是创建一个能够避免文本的扩展

extension NSStoryboardSegue.Identifier {
    static let secondVC = NSStoryboardSegue.Identifier("SegueIdentifierForSecondVC")
}
然后你就可以写了

self.performSegue(withIdentifier: .secondVC, sender: slider)


发生此错误的原因是
imagesQty
view中声明将出现
,而不是出现在类的顶层

换成

class SecondViewController: NSViewController {

    var imagesQty = 30 // Int is inferred

    // override func viewWillAppear() {
    //     super.viewWillAppear()
    // }
}
还有一个错误:
prepare(for segue
的签名错误。它必须是

func prepare(for segue: NSStoryboardSegue, sender: Any?) {

我修复了代码。我正在移动滑块,并且值没有更改。可能是其他原因?操作是否已连接?是否执行了该序列?第二个视图控制器的类是否设置为
SecondViewController
?操作已连接(从滑块到控制器,查看图片).Class是SecondViewController。如何检查是否执行segue?设置断点,插入
打印
行。请查看更新的答案。覆盖函数准备(对于segue:NSStoryboardSegue,发件人:任何?{}setI是否已修复代码。我正在移动滑块,且值未更改。可能是其他原因?操作是否已连接?是否执行了所有步骤?第二个视图控制器的类是否设置为
SecondViewController
?操作已连接(从滑块到控制器,查看图片).Class是SecondViewController。如何检查是否执行segue?设置断点,插入
打印
行。请查看更新的答案。override func prepare(对于segue:NSStoryboardSegue,发件人:Any?)已设置{}