2012-08-17 219 views
0

我現在使用的代碼不工作,每當我加載它並在UIPickerView中滾動時,它都會自動使用「else」語句的值。選擇更改標籤。 UIPickverView

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 
if ([pickerView selectedRowInComponent:0]) { 
    [label setText:@"row1"]; 
} 
if ([pickerView selectedRowInComponent:3]) { 
    [label setText:@"row2"]; 
} 
if ([pickerView selectedRowInComponent:4]) { 
    [label setText:@"row3"]; 
} 
else { 
    [label setText:@"row else"]; 
} 
} 

我在做什麼錯?

+0

組件加載時的價值是什麼? - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView的值是什麼? – CBredlow 2012-08-17 13:29:24

+0

value = return 1; – user1607001 2012-08-17 13:36:26

回答

0

使用類似於此的代碼。

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component { 

{ 
if (pickerView.tag==1) 
    { 
    if (row == 0) 
    { 
      [label setText:@"row1"]; 
    } 

    else if (row == 1) 
    { 
     [label setText:@"row2"]; 

    } 

    else if (row == 2) 
    { 
      [label setText:@"row3"]; 

    } 
    else{ 
      [label setText:@"row else"]; 

     } 
    } 
} 
+0

我得到一個警告:pickerView的本地聲明隱藏實例變量 – user1607001 2012-08-17 13:35:20

+0

檢查我已更新的答案 – Sumanth 2012-08-17 13:43:14

0

而不是創建許多if語句,請嘗試將if語句變爲「else if」語句。

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component { 
if ([pickerView selectedRowInComponent:0]) { 
    [label setText:@"row1"]; 
} 
else if ([pickerView selectedRowInComponent:3]) { 
    [label setText:@"row2"]; 
} 
else if ([pickerView selectedRowInComponent:4]) { 
    [label setText:@"row3"]; 
} 
else { 
    [label setText:@"row else"]; 
} 
} 
+0

我發現我的其他如果錯誤直接發佈後,但也不起作用。 – user1607001 2012-08-17 13:34:43

0

的原因是它不符合任何一個條件,selectedRowInComponent返回一個NSInteger,而不是一個布爾值。所以,你將不得不更新,如果條件包含的值,如

[selectedRowInComponent:1]==1 
0

你所有的基礎上該方法的返回值的條件:selectedRowInComponent它返回一個整數值。因爲它返回該組件中選定行的索引,所以您的值可能從-1到X,X是組件中有多少行。

如果您希望在某行上選擇任何內容時更新文本,則需要查看所選行索引是否大於-1,這意味着在您的選取器視圖中實際選擇了一行。

因此,嘗試更多的東西是這樣的:

if ([pickerView selectedRowInComponent:0] > -1) { 
    [label setText:@"row1"]; 
} 
else if ([pickerView selectedRowInComponent:3] > -1) { 
    [label setText:@"row2"]; 
} 
else if ([pickerView selectedRowInComponent:4] > -1) { 
    [label setText:@"row3"]; 
} 
else { 
    [label setText:@"row else"]; 
} 
1

試試這個:

,因爲你是在返回類型使用numberOfComponentsInPickerView = 1。

然後,你爲什麼要比較rowInComponent api。

- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component { 

    if(row == 0) 
    [label setText:@"row3"]; 

    else if(row == 1) 
    [label setText:@"row3"]; 

    else if(row == 3) 
    [label setText:@"row3"]; 

    else 
    [label setText:@"other"]; // this line will be called when row will be 2 or >3 
    } 

有多少行那裏 - pickerView:numberOfRowsInComponent:方法。

+0

這一個工作!謝謝! – user1607001 2012-08-18 10:12:43