1

pickerView選択内容が mainMatrix オブジェクトのプロパティに保存されないのはなぜですか?

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    [mainMatrix setM:[[self.numbers objectAtIndex:[pickerView selectedRowInComponent:0]] intValue]];
    [mainMatrix setN:[[self.numbers objectAtIndex:[pickerView selectedRowInComponent:1]] intValue]];
}
4

2 に答える 2

4

コードを分割して、何が起こっているかを実際に確認できるようにします。

NSUInteger selectedRow = [pickerView selectedRowInComponent:0];
int num = [self.numbers[selectedRow] intValue];
[mainMatrix setM:num];

selectedRow = [pickerView selectedRowInComponent:1];
int num = [self.numbers[selectedRow] intValue];
[mainMatrix setN:num];

これで、コードをデバッグして、実際に何が起こっているかを確認できます。読み取り可能でデバッグ可能なコードは、すべてを 1 行に詰め込むよりもはるかに優れています。

mainMatrixコードのこの時点で が nil でないことを確認してください。また、self.numbers非 nil であることも確認してください。最後に (本当に最初に)、delegateピッカー ビューで を設定したことを確認します。

于 2012-10-30T18:36:03.023 に答える
0

pickerview で両方のコンポーネントを設定するための同じ配列がありますか?? はいの場合は、このコードを試してください。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    if(component == 0) {
          [mainMatrix setM:[[self.numbers objectAtIndex:row] intValue]];
      }else if(component == 1){
          [mainMatrix setN:[[self.numbers objectAtIndex:row] intValue]];
      }
}
于 2012-10-30T18:35:13.690 に答える