2017-07-03 4 views
0

各スライダの最小値、最大値、現在値をストーリーボードのデフォルト値に設定しても、スライダを動かすと値が何とか2に移動したというエラーがスローされます。 :UISliderがNSRangeExceptionをスローする

var lElbowX = Int() 
var rElbowX = Int() 
var lElbowY = Int() 
var rElbowY = Int() 
var lWristX = Int() 
var lWristY = Int() 
var rWristX = Int() 
var rWristY = Int() 
var lKneeX = Int() 
var lKneeY = Int() 
var rKneeX = Int() 
var rKneeY = Int() 
var lAnkleX = Int() 
var lAnkleY = Int() 
var rAnkleX = Int() 
var rAnkleY = Int() 

@IBAction func vertical(_ sender: Any) {//The action function used to be empty 
    if jointPicker.selectedRow(inComponent: 2) == 1 {//left 
     if jointPicker.selectedRow(inComponent: 1) == 1 {//lNeck 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 2 {//lShoulder 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 3 {//lElbow 
      lElbowY = Int((verticalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 4 {//lWrist 
      lWristY = Int((verticalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 5 {//lSpine 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 6 {//lHip 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 7 {//lKnee 
      lKneeY = Int((verticalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 8 {//lAnkle 
      lAnkleY = Int((verticalSlider.value - 0.5) * 200) 
     } 

    } 
    if jointPicker.selectedRow(inComponent: 2) == 2 {//right 
     if jointPicker.selectedRow(inComponent: 1) == 1 {//rNeck 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 2 {//rShoulder 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 3 {//rElbow 
      rElbowY = Int((verticalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 4 {//rWrist 
      rWristY = Int((verticalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 5 {//rSpine 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 6 {//rHip 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 7 {//rKnee 
      rKneeY = Int((verticalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 8 {//rAnkle 
      rAnkleY = Int((verticalSlider.value - 0.5) * 200) 
     } 

    } 
} 
@IBAction func horizontal(_ sender: Any) {//The action function used to be empty 
    if jointPicker.selectedRow(inComponent: 2) == 1 {//left 
     if jointPicker.selectedRow(inComponent: 1) == 1 {//lNeck 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 2 {//lShoulder 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 3 {//lElbow 
      lElbowX = Int((horizontalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 4 {//lWrist 
      lWristX = Int((horizontalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 5 {//lSpine 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 6 {//lHip 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 7 {//lKnee 
      lKneeX = Int((horizontalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 8 {//lAnkle 
      lAnkleX = Int((horizontalSlider.value - 0.5) * 200) 
     } 

    } 
    if jointPicker.selectedRow(inComponent: 2) == 2 {//right 
     if jointPicker.selectedRow(inComponent: 1) == 1 {//rNeck 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 2 {//rShoulder 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 3 {//rElbow 
      rElbowX = Int((horizontalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 4 {//rWrist 
      rWristX = Int((horizontalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 5 {//rSpine 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 6 {//rHip 
      //nothing yet 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 7 {//rKnee 
      rKneeX = Int((horizontalSlider.value - 0.5) * 200) 
     } 
     if jointPicker.selectedRow(inComponent: 1) == 8 {//rAnkle 
      rAnkleX = Int((horizontalSlider.value - 0.5) * 200) 
     } 

    } 
} 

コールスタック:

2017-07-03 12:38:06.856 Exercise Generator[50942:2970421] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]' 
*** First throw call stack: 
(
0 CoreFoundation      0x0000000110352d4b __exceptionPreprocess + 171 
1 libobjc.A.dylib      0x000000010d66521e objc_exception_throw + 48 
2 CoreFoundation      0x00000001102842eb -[__NSArrayM objectAtIndex:] + 203 
3 UIKit        0x000000010db187ba -[UIPickerView selectedRowInComponent:] + 76 
4 Exercise Generator     0x000000010d060734 _TFC18Exercise_Generator12selectorView8verticalfP_T_ + 180 
5 Exercise Generator     0x000000010d062713 _TToFC18Exercise_Generator12selectorView8verticalfP_T_ + 67 
6 UIKit        0x000000010db368bc -[UIApplication sendAction:to:from:forEvent:] + 83 
7 UIKit        0x000000010dcbcc38 -[UIControl sendAction:to:forEvent:] + 67 
8 UIKit        0x000000010dcbcf51 -[UIControl _sendActionsForEvents:withEvent:] + 444 
9 UIKit        0x000000010dda60d4 -[UISlider beginTrackingWithTouch:withEvent:] + 1132 
10 UIKit        0x000000010dcbb893 -[UIControl touchesBegan:withEvent:] + 179 
11 UIKit        0x000000010dba4285 -[UIWindow _sendTouchesForEvent:] + 2043 
12 UIKit        0x000000010dba5c33 -[UIWindow sendEvent:] + 4011 
13 UIKit        0x000000010db529ab -[UIApplication sendEvent:] + 371 
14 UIKit        0x000000010e33f72d __dispatchPreprocessedEventFromEventQueue + 3248 
15 UIKit        0x000000010e338463 __handleEventQueue + 4879 
16 CoreFoundation      0x00000001102f7761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 
17 CoreFoundation      0x00000001102dc98c __CFRunLoopDoSources0 + 556 
18 CoreFoundation      0x00000001102dbe76 __CFRunLoopRun + 918 
19 CoreFoundation      0x00000001102db884 CFRunLoopRunSpecific + 420 
20 GraphicsServices     0x000000011228ca6f GSEventRunModal + 161 
21 UIKit        0x000000010db34c68 UIApplicationMain + 159 
22 Exercise Generator     0x000000010d0674ef main + 111 
23 libdyld.dylib      0x000000011130268d start + 1 
) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

答えて

0

のTaスタックトレースの最初の数フレームを見てください。あなたのvertical(_:)方法は、コンポーネントで選択された行のためのピッカービューを要求し、ピッカービューからオブジェクトを取得しようとすることを我々は見

'*** -[__NSArrayM objectAtIndex:]: index 2 beyond bounds [0 .. 1]' 
*** First throw call stack: 
(
0 __exceptionPreprocess + 171 
1 objc_exception_throw + 48 
2 -[__NSArrayM objectAtIndex:] + 203 
3 -[UIPickerView selectedRowInComponent:] + 76 
4 _TFC18Exercise_Generator12selectorView8verticalfP_T_ + 180 

:私は、スクロールを避けるために、画像やアドレスの列を切り出すますアレイ。

ピッカービューにはおそらくコンポーネントの配列があり、配列からコンポーネント2を取得しようとしています。なぜなら( )vertical(_:)で2つの異なる場所であなたはそれを聞いて

2.コンポーネントに関する私の推測では、あなたのピッカービューはインデックスのみ0と1

+0

おっとと、2つのコンポーネントがあります!私はコンポーネントに0から始まる番号が付いていることを完全に忘れていました。 –