单击按钮时自动滚动uipickerview

时间:2012-10-30 14:49:12

标签: objective-c ios xcode

我正在使用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]

3 个答案:

答案 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的调用方式。