私は、ユーザーがスロットマシンのようにUIPickerViewを回すことができるアプリケーションを構築しています。私が現時点で直面している問題は、実行時に私のpickerViewの画像がランダムに消え始めることです。その後、再びスピンし、そのうちのいくつかが戻ってきます。私のUIPickerViewからの画像は消えます
- (void)viewDidLoad{
[super viewDidLoad];
[drinkPickerView_ selectRow:1000 inComponent:0 animated:NO];
[drinkPickerView_ selectRow:1000 inComponent:1 animated:NO];
[drinkPickerView_ selectRow:1000 inComponent:2 animated:NO];
if (managedObjectContext_ == nil)
{
managedObjectContext_ = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
}
drinkPickerView_.delegate = self;
drinkPickerView_.dataSource = self;
UIImage *fris1 = [UIImage imageNamed:@"fris01.PNG"];
UIImage *fris2 = [UIImage imageNamed:@"fris02.PNG"];
UIImage *fris3 = [UIImage imageNamed:@"fris03.PNG"];
UIImage *fris4 = [UIImage imageNamed:@"fris04.PNG"];
UIImage *fris5 = [UIImage imageNamed:@"fris05.PNG"];
UIImageView *frisView1 = [[UIImageView alloc]initWithImage:fris1];
UIImageView *frisView2 = [[UIImageView alloc]initWithImage:fris2];
UIImageView *frisView3 = [[UIImageView alloc]initWithImage:fris3];
UIImageView *frisView4 = [[UIImageView alloc]initWithImage:fris4];
UIImageView *frisView5 = [[UIImageView alloc]initWithImage:fris5];
UIImage *alcoholisch1 = [UIImage imageNamed:@"alcohol01.PNG"];
UIImage *alcoholisch2 = [UIImage imageNamed:@"alcohol02.PNG"];
UIImage *alcoholisch3 = [UIImage imageNamed:@"alcohol03.PNG"];
UIImage *alcoholisch4 = [UIImage imageNamed:@"alcohol04.PNG"];
UIImage *alcoholisch5 = [UIImage imageNamed:@"alcohol05.PNG"];
UIImageView *alcoholischView1 = [[UIImageView alloc]initWithImage:alcoholisch1];
UIImageView *alcoholischView2 = [[UIImageView alloc]initWithImage:alcoholisch2];
UIImageView *alcoholischView3 = [[UIImageView alloc]initWithImage:alcoholisch3];
UIImageView *alcoholischView4 = [[UIImageView alloc]initWithImage:alcoholisch4];
UIImageView *alcoholischView5 = [[UIImageView alloc]initWithImage:alcoholisch5];
UIImage *freaky1 = [UIImage imageNamed:@"freaky01.PNG"];
UIImage *freaky2 = [UIImage imageNamed:@"freaky02.PNG"];
UIImage *freaky3 = [UIImage imageNamed:@"freaky03.PNG"];
UIImage *freaky4 = [UIImage imageNamed:@"freaky04.PNG"];
UIImage *freaky5 = [UIImage imageNamed:@"freaky05.PNG"];
UIImageView *freakyView1 = [[UIImageView alloc]initWithImage:freaky1];
UIImageView *freakyView2 = [[UIImageView alloc]initWithImage:freaky2];
UIImageView *freakyView3 = [[UIImageView alloc]initWithImage:freaky3];
UIImageView *freakyView4 = [[UIImageView alloc]initWithImage:freaky4];
UIImageView *freakyView5 = [[UIImageView alloc]initWithImage:freaky5];
NSArray *frisImageArray = [[NSArray alloc]initWithObjects:frisView1,frisView2,frisView3,frisView4,frisView5, nil];
NSArray *alcoholischImageArray = [[NSArray alloc]initWithObjects:alcoholischView1,alcoholischView2,alcoholischView3,alcoholischView4,alcoholischView5, nil];
NSArray *freakyImageArray = [[NSArray alloc]initWithObjects:freakyView1,freakyView2,freakyView3,freakyView4,freakyView5, nil];
NSString *frisFieldName = [[NSString alloc]initWithFormat:@"frisDrankenPlaatjesArray"];
[self setValue:frisImageArray forKey:frisFieldName];
NSString *alcoholischFieldName = [[NSString alloc]initWithFormat:@"alcoholischeDrankenPlaatjesArray"];
[self setValue:alcoholischImageArray forKey:alcoholischFieldName];
NSString *freakyFieldName = [[NSString alloc]initWithFormat:@"freakyDrankenPlaatjesArray"];
[self setValue:freakyImageArray forKey:freakyFieldName];
}
これはされています。ここ
が、私は画像の配列を作るために使用するコードです(私のプロジェクトで、私はそれを絞り込まれた空間のビットを保存するのではなく、すべての配列の17枚の画像があります)私はpickerViewで画像を読み込むコード:-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row
forComponent:(NSInteger)component reusingView:(UIView *)view{
if (component==0) {
NSString *arrayName = [[NSString alloc]initWithFormat:@"alcoholischeDrankenPlaatjesArray"];
NSArray *array = [self valueForKey:arrayName];
return [array objectAtIndex:(row%5)];
}
else if(component==1){
NSString *arrayName = [[NSString alloc]initWithFormat:@"frisDrankenPlaatjesArray"];
NSArray *array = [self valueForKey:arrayName];
return [array objectAtIndex:(row%5)];
}
else if (component==2){
NSString *arrayName = [[NSString alloc]initWithFormat:@"freakyDrankenPlaatjesArray"];
NSArray *array = [self valueForKey:arrayName];
return [array objectAtIndex:(row%5)];
}
else{
return nil;
}
}
これはpickerViewスピンを行うコードです:
-(IBAction)rotate:(id)sender{
int numInRow =1;
int lastVal = -1;
for (int i=0;i<3; i++) {
int newValue = arc4random()%1000;
if (newValue==lastVal)
numInRow++;
else
numInRow =1;
lastVal=newValue;
[drinkPickerView_ selectRow:newValue inComponent:i animated:YES];
[drinkPickerView_ reloadComponent:i];
}
}
これは十分な情報であり、誰かが私を助けてくれることを願っています。
私は作成したアプリでギャラリービューを持っていました。そこにおそらく200-300 +の画像があります。私は2つの事柄に至るいくつかの奇妙な問題を抱えていた。画像のサイズは、2つの画像があり、残りの部分とメモリの問題に比べて巨大な場所です(多くの場合に使用します)。私はあなたの画像のどれもが非常に巨大であることをチェックしません。 「非常に巨大」ということを念頭に置くと、画像の90%が20kbであり、次に2〜5MBの画像がいくつかあります。 –
返信ありがとうございますが、私の画像はすべて2〜5 KBですので、それが問題だとは思いません。 –