gpt4 book ai didi

iphone - 以编程方式将开关添加到 ScrollView 会引发异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:52 25 4
gpt4 key购买 nike

我正在使用 Storyboard并将一个 ScrollView 窗口拖到一个 View 上。在我的代码中,我以编程方式创建了一个开关对象,该对象不知何故未正确初始化。该开关正确显示在 View 上,但每当我单击该开关时,都会抛出一个异常

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

我还尝试将开/关文本编辑为是/否,访问开关也会引发相同的异常。显然,我在创建开关和设置正确的委托(delegate)或其他方面遗漏了一些东西。

我创建开关的代码是..

        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:]。当通过尝试调整文本调用错误时,'原因'是 reason: '-[UIImageView setText:]

任何关于我遗漏的帮助都会很棒。

谢谢

最佳答案

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

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

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

作为旁注。对于 UISwitch,您通常希望为 UIControlEventValueChanged 调用您的方法,这样如果用户只是触摸开关但没有“切换”它,您的方法将不会被调用.

编辑以响应:“我只是尝试将 UISwitch 更改为‘self’,但错误仍然存​​在。我还没有创建 actionSwitch 方法。”

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

View Controller 是实现这个方法的理想场所。此事件目标的非常标准的实现如下所示:

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

关于iphone - 以编程方式将开关添加到 ScrollView 会引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8900396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com