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