2014-09-04 4 views
0

Я хочу, чтобы UISwitch появлялся в CKTranscriptConversationController в Message.app (MobileSMS.app) и вызывал метод forceMSMS из класса CKConversation. Он компилируется отлично, но когда я запускаю messages.app, он сбой. Есть идеи?Как я могу использовать метод вызова UISwitch (я использую теорию)

Как только я запускаю Message.app, он падает, то, что я пытаюсь вызвать, - http://ghostbin.com/paste/3upv6, когда переключатель включен и возвращает FALSE; когда переключатель выключен. Я смог сделать фактическое отображение переключателя без метода, но как только я ввел его в код, он немедленно сбрасывает приложение.

Код:

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

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

%hook CKTranscriptCollectionViewController 

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

-(BOOL)forceMMS { 
    if ([self.mySwitch isOn]){ 
      return TRUE; 
     } else { 
      return FALSE; 
     } 
}  

%end 
+0

паста авария сообщение также – raki

+0

Он компилирует прекрасно для меня, но приложение падает –

+0

@raki я нет сообщения аварии я использую Теос –

ответ

1

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

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

Затем реализовать метод возьмите переключатель в качестве параметра, чтобы вы могли получить состояние, когда оно переключено:

- (void)yourMethodHere:(UISwitch *)theSwitch { 
    NSLog(@"The switch is %@.", theSwitch.isOn ? @"on" : @"off"); 
} 
+0

Я собирал этот кода и запустил messages.app, и он все еще разбился. –

+0

Ну, вам нужно предоставить некоторую информацию, потому что я абсолютно не знаю, в чем проблема. Как я уже упоминал в другом комментарии, я даже не мог скомпилировать этот код. – Mike

+0

Где он падает? Когда он падает? Что такое трассировка стека? Какое исключение? – Mike

0

Попробуйте:

ViewDidload:

self.mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(10, 10, 51, 31)]; 
[self.mySwitch addTarget:self action:@selector(changeInSwitch:) forControlEvents:UIControlEventValueChanged]; 
[self.view addSubview:self.mySwitch]; 

- (IBAction)changeInSwitch:(id)sender 
{ 

if ([self forceMMS) 
{ 
    NSLog(@"IN ON"); 
} 
else 
{ 
NSLog(@"IN OFF"); 
} 

    } 

-(BOOL)forceMMS { 
if ([self.mySwitch isOn]){ 
     return TRUE; 
    } else { 
     return FALSE; 
    } 
    }  
+0

, но это будет называться: \t http://ghostbin.com/paste/3upv6, когда переключатель включен? –

+0

Просто хочу называть метод –

+0

это код: https://ghostbin.com/paste/ba6av это ошибка от theos: https://ghostbin.com/paste/hzqoj –

Смежные вопросы