首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式将开关添加到scrollview会引发异常

以编程方式将开关添加到scrollview会引发异常
EN

Stack Overflow用户
提问于 2012-01-18 03:20:03
回答 1查看 842关注 0票数 2

我正在使用故事板,并将滚动视图窗口拖到视图上。在我的代码中,我以编程方式创建了一个没有正确初始化的switch对象。开关正确地出现在视图上,但是每当我单击开关时,就会抛出一个异常,声明

“无法识别的选择器发送到实例0x6a786f0'”

我还尝试将On/Off文本编辑为Yes/No,访问开关时也会抛出相同的异常。显然,我在创建开关和设置正确的委托或其他东西时遗漏了一些东西。

我创建开关的代码是..

代码语言:javascript
复制
        UISwitch *switchControl = [[UISwitch alloc] initWithFrame:CGRectMake(x, y, 60, 20)];
        [switchControl addTarget:inputsView action:@selector(actionSwitch:) forControlEvents:UIControlEventTouchUpInside];
        [switchControl setBackgroundColor:[UIColor clearColor]];
        //[(UILabel *)[[[[[[switchControl subviews] lastObject] subviews]
        //               objectAtIndex:1] subviews] objectAtIndex:0] setText:@"Yes"];
        //[(UILabel *)[[[[[[switchControl subviews] lastObject] subviews]
        //               objectAtIndex:1] subviews] objectAtIndex:1] setText:@"No"];


        [inputsView addSubview:switchControl];

inputsView是我在.h文件中创建的UIScrollView的名称。

我要注意的是,当单击开关时调用异常时,错误中的‘原因’是原因:'-UIScrollView actionSwitch:。当试图调整文本时调用错误时,‘原因’是原因:'-UIImageView setText:

如果能帮上我的忙,那就太好了。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-18 03:30:27

异常是正确的,UIScrolView没有actionSwitch:方法。addTarget:中的目标参数是要接收selector:参数的对象。

如果您发布的代码位于具有actionSwitch:方法的类中,那么您将使用self作为目标,如下所示:

代码语言:javascript
复制
[switchControl addTarget:self action:@selector(actionSwitch:) forControlEvents:UIControlEventTouchUpInside];

顺便说一句。对于UISwitch,您通常希望为UIControlEventValueChanged调用您的方法,这样,如果用户只触摸了开关,但没有“切换”它,您的方法将不会被调用。

编辑回应:“我刚刚尝试将UISwitch更改为'self‘,但仍然出现错误。我还没有创建actionSwitch方法。”

是的,您的应用程序仍然会崩溃,因为无论您作为目标传入什么,都必须实现作为选择器传入的选择器/方法。

视图控制器是实现此方法的理想场所。此事件目标的一个非常标准的实现将如下所示:

代码语言:javascript
复制
-(void)actionSwitch:(UISwitch *)theSwitch{
    if (theSwitch.isOn){
        // Switch was switched on respond accordingly 
    }
    else {
        // Switch was switched off respond accordingly 
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8900396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档