Как я могу заставить свой UIswitch что-то делать?

Как заставить мой UISwitch вызывать эту функцию: https://ghostbin.com/paste/y2xrc, когда включено и возвращает FALSE; когда он выключен.

(У меня есть переключатель для отображения внутри «CKTranscriptCollectionViewController» в Messages.app (MobileSMS.app), и теперь я хочу, чтобы он что-то делал при включении или выключении, что я разместил в ссылке выше).

#import <UIKit/UIKit.h>
#import <ChatKit/CKConversation.h>

@interface CKTranscriptCollectionViewController : UIViewController
@property (nonatomic, strong) UISwitch *mySwitch;
- (void)loadView;
@end

%hook CKTranscriptCollectionViewController

- (void)viewDidLoad {   
    %orig;
    UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(10, 10, 51, 31)];
    [mySwitch setOn:NO animated:YES];
    [self.view addSubview:mySwitch];
}

%end

person Brandon Salgado    schedule 04.09.2014    source источник


Ответы (4)


определите логическое значение в вашем заголовочном файле,

BOOL allowForceMMS;

-(BOOL)forceMMS {
    return allowForceMMS;
)

- (void)viewDidLoad {   
    %orig;
    UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(10, 10, 51, 31)];

    //add action on switch to handle switch on/off
    [mySwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged];

    [mySwitch setOn:NO animated:YES];
    [self.view addSubview:mySwitch];
}

-(void)setState:(UISwitch*)switch {
    allowForceMMS = switch.isOn;
}
person Hemang    schedule 04.09.2014

Вы можете указать цель, которая будет вызываться... при смене переключателя...

- (void)viewDidLoad {   

UISwitch *mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(10, 10, 51, 31)];
[mySwitch addTarget:self action:@selector(valueChange:) forControlEvents:UIControlEventValueChanged];
[mySwitch setOn:NO animated:YES];
[self.view addSubview:mySwitch];
}
-(void)valueChange:(UISwitch*)switch
{
if(switch.isOn)
{
     //switch is on
}
else
{
     //switch is off
}

}

Надеюсь, это поможет вам ..!

person Vidhyanand    schedule 04.09.2014

Просто создайте UISwitch, как показано ниже, в методе viewDidLoad,

UISwitch *mySwitch = [[UISwitch alloc] init];
[mySwitch addTarget:self action:@selector(switchValueChangeHandler:) forControlEvents:UIControlEventValueChanged];

Затем при вызове метода в случае изменения переключателя проверьте состояние «ВКЛ» (значение логического значения — YES или n = NO)

-(void)switchValueChangeHandler:(UISwitch*)sender
{
  NSLog(@"%@",sender.on);
}

Затем, согласно sender.on, истинно или ложно, вы можете выполнить свою операцию.

person nikhil84    schedule 04.09.2014

сделать это в вашем представленииdidload

[switchTemp addTarget:self action:@selector(ChangeValue) forControlEvents:UIControlEventValueChanged];

и эта функция

-(BOOL)forceMMS
{
     if (switchTemp.isOn)
     { 
       return YES;
     }
     else
     {
    return NO;
     }
 }
person Himanshu    schedule 04.09.2014
comment
Но как мне это сделать, чтобы вызвать функцию, которую я разместил в ссылке выше, -(BOOL)forceMMS? - person Brandon Salgado; 04.09.2014
comment
хотите, чтобы он вызывался коммутатором или вами - person Himanshu; 04.09.2014
comment
@BrandonSalgado я изменил его на имя вашей функции ... и это будет вызываться переключателем при нажатии, и вы можете вызвать это вручную с помощью [self forceMMS] и сохранить значение BOOL. - person Himanshu; 04.09.2014