UISwitch没有改变Swift的价值

时间:2016-03-04 17:12:12

标签: swift function swift2 uiswitch

我在Swift 2.2应用程序中使用这个小功能:

// A pointer variable supposed to point to an instance of the struct
struct mystruct *pointer;

// This is a general address represented by void*
void *addr = some_function(0);

// Cast that general address to a pointer varibale pointing to
// an instance of the struct
pointer = (struct mystruct *) addr;

// Use it!
printf("%d", pointer->a);

当调用该函数时,它会打印出我要求的所有内容,但切换值永远不会改变!

我尝试在ViewDidLoad中使用func changeSwitchValue() { if self.lampValue == 1 { self.switch0.setOn(true, animated: false) print("changed to 1") } if self.lampValue == 0 { self.switch0.setOn(false, animated: true) print("changed to 0") } } 并在那里工作。当被这个功能调用时,它不起作用。如果我通过IBAction调用这段代码,它也不起作用..

有谁知道这个奇怪的问题?有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

确保在主线程上执行ui操作

    dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0)) { () -> Void in
        // do the networking here
        // if you are done update the ui on the main thread
        dispatch_async(dispatch_get_main_queue()
            ) { () -> Void in
                self.mySwitch.setOn(!self.mySwitch.on, animated: true)
        }
    }

答案 1 :(得分:-2)

你还没有发布足够的代码,但我会假设switch0是一个UIBwitch,它是一个nib,并在视图控制器中声明如下:

@IBOutlet weak var switch0: UISwitch!

如果不是这样,那么所有的赌注都是关闭:)所以我的反馈是,你确定switch0连接到笔尖中的正确插座吗?