我正在使用UIPickerView来显示问题的答案。如果用户无法解决问题,则需要一个按钮来显示正确的答案。我尝试了以下,但应用程序崩溃了。如何自动滚动到正确的答案?
-(void)reveal {
[myPickerView selectRow:0 inComponent:0 animated:YES];
}
编辑:是的我只是想让它滚动到上面示例中的第一个答案:)
[ExcerciseController揭示:]:无法识别的选择器发送到实例0x68398f0 2012-10-30 14:57:21.673英语[20786:f803] *由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [ExcerciseController揭示:]:无法识别的选择器发送到实例0x68398f0' * 第一次抛出调用堆栈: (0x1397022 0x108ccd6 0x1398cbd 0x12fded0 0x12fdcb2 0x1398e99 0x1f214e 0x1f20e6 0x298ade 0x298fa7 0x298266 0x2173c0 0x2175e6 0x1fddc4 0x1f1634 0x21a3ef5 0x136b195 0x12cfff2 0x12ce8da 0x12cdd84 0x12cdc9b 0x21a27d8 0x21a288a 0x1ef626 0x2c5d 0x2b85) 终止调用抛出异常[切换到进程20786线程0xf803]
答案 0 :(得分:1)
现在,错误/崩溃消息是可见的,事实证明错误不在于您如何调用选择器的方法。这是你调用reveal
的方式。
你用某个对象调用显示。或者你通过传递选择器来调用它。但是,您调用的当前选择器为reveal:
,但方法名称为reveal
,没有任何参数。 reveal:
需要一个参数。
无论您何时致电,请务必致电reveal
而不是reveal:
我假设您在界面构建器中或以编程方式创建按钮时设置选择器。那是你犯错误的地方。
一些背景:
错误消息告诉您需要知道的内容。方法名称在运行时在Objective-C中称为选择器。在一些文献中,您会发现消息的措辞(在您的案例中名为reveal:
)将发送到您案例中名为ExcerciseController
的接收者。
Objective-C是多态的。这意味着reveal
(不带任何参数调用)引用的是另一种方法实现,而不是reveal:
(使用一个参数调用)或甚至是reveal::
(使用三个参数调用)。
答案 1 :(得分:0)
请尝试发布崩溃说明,需要更多代码块来回答:)
但是,只需尝试下面的代码
myPickerView.delegate = self;
[myPickerView reloadAllComponents];
[myPickerView selectRow:0 inComponent:0 animated:YES];
答案 2 :(得分:0)
myPickerView
可能不是UIPickerView
的实例,UIPickerView
响应选择器 - (void)selectRow:(NSInteger)row inComponent:(NSInteger)component animated:(BOOL)animated
或者您必须检查方法reveal
的调用方式。