Как я могу заставить свой UISwitch вызывать этот метод? (используя теос)

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

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

#import <UIKit/UIKit.h>
#import <ChatKit/ChatKit.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 источник


Ответы (2)


Для UISwitch вы должны добавить цель для UIControlEventValueChanged

[mySwitch addTarget:self action:@selector(switchToggle) forControlEvents:UIControlEventValueChanged];

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

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIControl_Class/Reference/Reference.html#//apple_ref/c/econst/UIControlEventValueChanged

person hukir    schedule 04.09.2014
comment
я не совсем уверен, как это сделать? я знаю, что нужно добавить ваш код в viewdidload; но как мне заставить его выполнить действие по ссылке, которую я разместил? - person Brandon Salgado; 04.09.2014
comment
Мне нужно больше узнать о структуре вашего класса и реальных объектах, доступных во время выполнения. Мое предположение состояло бы в том, чтобы добавить метод к вашему контроллеру представления, который переключает свойство объекта диалога. - person hukir; 04.09.2014

Вы можете попробовать это:

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

- (void)generateLegendaryMessage:(id)sender 
{
    NSLog("Its gonna be legen...... wait for it ...... dary !!!!!!!");
}
person NightBits    schedule 20.09.2014