2011-12-21 36 views
42

Tôi muốn thực hiện một số hành động khi UISwitch thay đổi trạng thái của nó, do đó được bật hoặc tắt. Làm thế nào để tôi làm điều này? Tôi cần truyền hai đối tượng làm tham số.Cách gọi hành động khi UISwitch thay đổi trạng thái?

Nó được tạo bằng mã, do đó không sử dụng xib.

+1

Tham khảo link này [hành động UISwitch] (http://stackoverflow.com/a/8521373/1072867) – akk

Trả lời

107
[yourSwitchObject addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged]; 

này sẽ gọi phương thức dưới đây khi nhà nước chuyển đổi của bạn thay đổi

- (void)setState:(id)sender 
{ 
    BOOL state = [sender isOn]; 
    NSString *rez = state == YES ? @"YES" : @"NO"; 
    NSLog(rez); 
} 
+3

Bạn sẽ đặt đại biểu như thế nào? Tôi không thấy thuộc tính 'delegate' hoặc' - setDelegate'. – Joeran

+1

Không cần phải thiết lập đại biểu, đó là phương pháp riêng của bạn;) –

1

Rõ ràng chúng ta có thể làm tương tự với Swift, đây là mã (biên soạn và làm việc với phiên bản mới nhất của Swift 3,1)

Thêm hành động để nút chuyển đổi của bạn:

mySwitch.addTarget(self, action: #selector(self.switchValueDidChange), for: .valueChanged) 

Và thực hiện phương pháp này:

func switchValueDidChange(sender:UISwitch!) { 
    print(sender.isOn) 
} 

Hoặc ngay cả khi bạn không sử dụng cho người gửi, bạn có thể loại bỏ:

func switchValueDidChange() { 
    // do your stuff 
} 
Các vấn đề liên quan