Ios 无法将按钮的状态(true或false)传递给Xcode中的函数

Ios 无法将按钮的状态(true或false)传递给Xcode中的函数,ios,swift,Ios,Swift,在ViewController中声明 在计算器引擎类ViewController中实例化: 由于您使用的是@iAction,我假设您的viewController是在故事板或xib上制作的,因此,您不应该实例化它。我认为Hermann Klecker的评论是正确的,您正在创建视图控制器的新实例,如果您实际上正在那里实例化它的话。您必须将现有实例传递到引擎中 您可能会重新考虑在视图控制器上设置开关状态,当然也应该重新考虑让引擎拥有对视图控制器的引用 如何获取self.viewC的实例?局部变量va

在ViewController中声明

在计算器引擎类ViewController中实例化:


由于您使用的是@iAction,我假设您的viewController是在故事板或xib上制作的,因此,您不应该实例化它。我认为Hermann Klecker的评论是正确的,您正在创建视图控制器的新实例,如果您实际上正在那里实例化它的话。您必须将现有实例传递到引擎中


您可能会重新考虑在视图控制器上设置开关状态,当然也应该重新考虑让引擎拥有对视图控制器的引用

如何获取self.viewC的实例?局部变量
var viewC:ViewController?
nil
。您需要对
ViewController
viewC
的实际实例进行引用。如果当时是
viewC将导致运行时异常。如果您使用的是
self.viewC.secondActive
,我同意您的看法。但是,
viewC
可能引用另一个ViewController实例。你能分享一下你如何以及在哪里实例化
vewC
?并再次检查计算器引擎中的
viewC
ViewController
中的
self
是否实际上是同一个对象。
var secondActive :Bool = true


@IBAction func swichState(sender: UIButton) 

{

    secondActive = !secondActive;  

    print("Boolean set to  + \(self.secondActive.boolValue)")  

    // return secondActive.boolValue();    

}
var viewC: ViewController?

case "sin":

if operandStack.count >= 1 

        {                                
            if (self.viewC!.secondActive == true) {

                return sin(self.operandStack.removeLast() * M_PI/180)

            }

            else {

                return asin(self.operandStack.removeLast() * M_PI/180)

            }
        }