0
我在這裏是新的,我在XCODE上的一些iPhone應用程序上弄髒我的手。我目前正在創建一個應用程序,但我被困在涉及pickerview的特定部分。這是代碼。使用for循環的UIPickerView
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
if ([pickerView tag] == 0){
return [firstColumn count];
}
else if ([pickerView tag] == 1){
return [OnFirstMin count];
return [OnSecMin count];
return [OnSecSec count];
return [OnFirstSec count];
}
else {
return [OffFirstMin count];
return [OffSecMin count];
return [OffFirstSec count];
return [OffSecSec count];
}
return 0;
}
-(NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
if([pickerView tag] == 0){
if(component == FIRST){
return [firstColumn objectAtIndex:row];
}
}
else if ([pickerView tag] == 1){
if(component == ON1){
return [OnSecMin objectAtIndex:row];
}
else if (component == ON2){
return [OnFirstMin objectAtIndex:row];
}
else if (component == ON3){
return [OnSecSec objectAtIndex:row];
}
else {
return [OnFirstSec objectAtIndex:row];
}
}
else {
if(component == OFF1){
return [OffSecMin objectAtIndex:row];
}
else if (component == OFF2){
return [OffFirstSec objectAtIndex:row];
}
else if (component == OFF3){
return [OffSecSec objectAtIndex:row];
}
else {
return [OffFirstSec objectAtIndex:row];
}
}
return 0;
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{
if ([pickerView tag] == 0){
if(sets == TRUE && reps != TRUE){
numofsets = row;
SetsTextField.text = [firstColumn objectAtIndex:row];
}
else{
numofreps = row;
RepsTextField.text = [firstColumn objectAtIndex:row];
}
}
else if ([pickerView tag] == 1){
if(component == ON1){
onsecmin = row;
}
else if (component == ON2){
onfirstmin = row;
}
else if (component == ON3){
onsecsec = row;
}
else {
onfirstsec = row;
}
}
else {
if (component == OFF1){
offsecmin = row;
}
else if (component == OFF2){
offfirstmin = row;
}
else if (component == OFF3){
offsecsec = row;
}
else {
offfirstsec = row;
}
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
firstColumn = [[NSMutableArray alloc] init];
for(i=0; i<=30; i++){
[firstColumn addObject: [NSString stringWithFormat:@"%d", i]];
}
OnSecMin = [[NSMutableArray alloc] init];
OnFirstMin = [[NSMutableArray alloc] init];
for(j=0; j<60; j++){
[OnSecMin addObject:[NSString stringWithFormat:@"%i", j]];
[OnFirstMin addObject: [NSString stringWithFormat:@"%i", j]];
}
OnSecSec = [[NSMutableArray alloc] init]; //Part where I need help.
k =0;
while (k<60){
[OnSecSec addObject: [NSString stringWithFormat:@"%i",k]];
k = k+15;
}
PickerViewSetsRepsContainer.frame = CGRectMake(0, 600, 320, 206);
PickerViewOnContainer.frame = CGRectMake(0, 610, 320, 206);
PickerViewOffContainer.frame = CGRectMake(0, 620, 320, 206);
}
因此,對於OnSecSec,我希望行顯示該組件的0,15,30和45。但是,當我運行它時,應用程序被中止。但是,當我將該部分更改爲for循環時,就像我爲OnSecMin和OnFirstMin所做的那樣,它可以工作。我怎麼不能像上面那樣使用一個while循環?另外,有人可以幫助我解決這個難題嗎?非常感謝您提前給予的幫助!
在'numberOfRowsInComponent',多'return'報表一前一後沒有意義。只有那些代碼塊中的第一個'return'纔會執行(一個'return'語句在那裏結束方法執行)。如果你想基於'component'返回不同的計數,可以使用'switch'或者一系列'if'語句,然後執行返回值和分量值。 – Anna