2012-01-17 70 views
2

我正在使用故事板并将滚动视图窗口拖到视图上。在我的代码中,我以编程方式创建了一个开关对象,该对象以某种方式未被正确初始化。该交换机上的看法似乎正确,但每当我点击开关,抛出一个异常说以编程方式将开关添加到滚动视图抛出异常

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

我也试图编辑开/关文本是/否,访问交换机也会引发相同的异常。显然,我错过了创建我的开关和设置正确的代表或其他任何东西。

我的代码来创建开关..

 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是我的UIScrollView,我在我的.h文件中创建的名称。

我应该注意到,当点击开关调用异常时,在错误中'reason'是原因:' - [UIScrollView actionSwitch:]。当通过尝试调整文本调用错误时,“原因”就是原因:' - [UIImageView setText:]

对我所缺失的任何帮助都会很棒。

感谢

回答

2

唯一的例外是正确的,UIScrolView没有一个方法actionSwitch:addTarget:中的目标参数是您想要接收参数selector:的对象。

如果您发布的代码是在具有actionSwitch:方法,那么你会用自己的目标,像这样的类:

[switchControl addTarget:self action:@selector(actionSwitch:) forControlEvents:UIControlEventTouchUpInside]; 

而作为一个方面说明。对于UISwitch,你通常希望你的方法调用UIControlEventValueChanged,这样,如果用户只是触摸开关,但不“切换”它,你的方法将不会被调用。

编辑回复为:“我只是试图改变'自我'的UISwitch,错误仍然发生,我还没有创建一个actionSwitch方法。

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

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

-(void)actionSwitch:(UISwitch *)theSwitch{ 
    if (theSwitch.isOn){ 
     // Switch was switched on respond accordingly 
    } 
    else { 
     // Switch was switched off respond accordingly 
    } 
} 
+0

我之所以没有使用'self'是因为我也有编程创建的文本框。 “自我”他们出现在UIScrollView背后的视图中,用户看不到它们。但我只是尝试改变为UISwitch的“自我”,并且错误仍然存​​在。我还没有创建一个actionSwitch方法。如果我在UIScrollView所在的视图控制器中执行此操作,是否可以解决问题?此外,关于如何创建所述动作切换方法的任何链接或信息也会很好。 – 2012-01-17 19:42:48

+0

好的,我添加了一个 - (IBAction)选择器:(id)actionSwitch {}方法,但错误仍然发生。请记住,我必须动态创建这些内容,并有可能,根据用户,我可能永远不会创建交换机。所以我不能假设他们会一直在那里的一堆变量和方法。 – 2012-01-17 19:52:41

+0

@JesseDurham,在回应评论时附上答案。 – NJones 2012-01-17 20:02:58

相关问题