ios - 我怎样才能让我的 UISwitch 调用方法(我正在使用 theos)

标签 ios objective-c iphone uiswitch theos

我希望 UISwitch 出现在 Messages.app (MobileSMS.app) 内的 CKTranscriptConversationController 中,并从类 CKConversation 调用方法 forceMMS。它编译得很好,但是当我启动 messages.app 时它崩溃了。有任何想法吗?

一旦我启动 Messages.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

最佳答案

如果您只想在切换开关时调用方法,请向开关添加目标:

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

然后实现您的方法以将开关作为参数,以便您可以获取切换时的状态:

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

关于ios - 我怎样才能让我的 UISwitch 调用方法(我正在使用 theos),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25657639/

相关文章:

ios - Heroku 状态 503 应用程序崩溃

ios - 是否有编译器标志以便链接器警告我这个? .h 文件,没有 .m 文件

ios - 访问 cellforrow 之外的 tableview 内容

ios - performSegueWithIdentifier : unexpectedly found nil while unwrapping an Optional value

仅使用 Xcode 6.0.1 在 iOS 7 上 iOS 应用程序崩溃 - 无法识别的选择器发送到实例

objective-c - if 语句中的赋值警告?

ios - ScrollView 中的多个图像

iphone - 如何在 iPhone 中重新加载 UIPickerView?

iphone - UIGestureRecognizer 阻止表格单元格 View 中的按钮

ios - iPhone/iPad 之间不同效果的 CALayer