Ios UIpickerView不使用参数行号

Ios UIpickerView不使用参数行号,ios,objective-c,uipickerview,Ios,Objective C,Uipickerview,这里是错误,我在其他问题中看到了: *由于未捕获的异常“NSRangeException”而终止应用程序,原因:'*-[NSMutableIndexSet AddIndexInsRange:]:范围{11529215046068470577,1}超过了NSNotFound的最大索引值-1' ***第一次抛出调用堆栈: 选择器可用并加载了数据。 我按下一个按钮转到特定的行。以下是按钮内的代码: 此代码正在运行: [Picker reloadAllComponents]; [Picker selec

这里是错误,我在其他问题中看到了:

*由于未捕获的异常“NSRangeException”而终止应用程序,原因:'*-[NSMutableIndexSet AddIndexInsRange:]:范围{11529215046068470577,1}超过了NSNotFound的最大索引值-1' ***第一次抛出调用堆栈:

选择器可用并加载了数据。 我按下一个按钮转到特定的行。以下是按钮内的代码:

此代码正在运行:

[Picker reloadAllComponents];
[Picker selectRow:5 inComponent:0 animated:YES];
此代码不起作用

[Picker reloadAllComponents];
NSInteger Nnb = (NSInteger) self.Nbrow.text;
[Picker selectRow: **Nnb** inComponent:0 animated:YES];
为什么硬编码的数字可以工作,而不是动态数字

我看到这个问题: 还有委托的故事,但如果你编码一个数字,它就可以工作,而它不能与一个参数一起工作,这一事实似乎很疯狂

两种方法都已实现,但不要忘了这是一个数字:

- (int)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
- (NSString*)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component

问题在于这一行:

NSInteger Nnb = (NSInteger) self.brow.text;
您不能用这种方式将
NSString
强制转换为
NSInteger
。您可以使用NSString的方法来实现这一点:

NSInteger Nnb = [self.Nbrow.text integerValue];
你不能这样做:

NSInteger Nnb = (NSInteger) self.Nbrow.text;
并期待所需的数字。这样做的目的是将
NSString
对象的指针转换为
NSInteger
。它不会将文本字符串转换为其数值

您需要使用适当的方法将字符串转换为数字

NSInteger Nnb = [self.Nbrow.text integerValue];

顺便说一句-请学习使用正确的命名约定。变量和方法名称应以小写字母开头。类名应使用大写字母。

您不能简单地将
NSString
强制转换为
NSInteger
。这不是将字符串转换为数字的方式。不要将
intValue
NSInteger
一起使用。