我知道已经有很多类似这样的问题。请不要低估或关闭问题。我刚刚尝试实施这些问题的解决方案。没有为我工作。而且我的情况也有所不同。这里是:从UIScrollView中删除UIImageView
我的应用程序包含一个图片库。它是一个滚动视图,显示从sqlite数据库检索到的图片。用户可以滚动图像,添加或删除图像等。我可以动态地添加图片到图库。但是当我需要实现删除功能时,问题就出现了。我使用下面的代码,但即使在调用removeFromSuperView
后,图像也没有从滚动视图中移除。
-(void)deleteDeck{
if(selectedEditDeck!=0){
[deck deleteSelectedDeck:selectedEditDeck]; //deleting from database
//problem starts here ***
[(UIImageView*)[decksGallery viewWithTag:selectedEditDeck-1]removeFromSuperview];
[self loadGallery];
selectedEditDeck=0;
//Ends here*****
[tableData release];
tableData=[NSMutableArray array];
[self showCardNamesinTable];
[aTableView reloadData];
}
我已经创造了的loadView方法的UIScrollView。然后刷新每个删除和添加的图像的后视图,以便我可以显示更新的库,我使用了下面的代码段:
-(void)loadGallery{ //Reloading all for adding a single deck image.
//Database part****
NSString *sqlStr = [NSString stringWithFormat:@"select first_card from decksTable"];
char *sql = (char*)[sqlStr UTF8String];
kidsFlashCardAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSMutableArray *galleryImagesArray=[appDelegate.dbConnection fetchColumnFromTable:sql col:0];
NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString *docDirectory = [sysPaths objectAtIndex:0];
numberofImages = [galleryImagesArray count];
printf("number is %d",numberofImages);//Database part of code ends here
//在下面的代码片断我将图像添加到的UIScrollView
for (int i = 0; i < [galleryImagesArray count]; i++) {
CGFloat yOrigin = i * 65;
NSString *filePath = [NSString stringWithFormat:@"%@/%@", docDirectory,[galleryImagesArray objectAtIndex:i]];
galleryImage = [[UIImageView alloc] initWithFrame:CGRectMake(yOrigin+140, 15,50,50)];
//galleryImage.tag=[galleryImagesArray count];
galleryImage.tag=i;
printf("THE TAG IS %d",galleryImage.tag);
galleryImage.clipsToBounds=YES;
galleryImage.layer.cornerRadius=11.0;
galleryImage.backgroundColor=[UIColor clearColor];
galleryImage.image =[UIImage imageWithContentsOfFile:filePath];
[decksGallery addSubview:galleryImage];
[galleryImage release];
}
decksGallery.contentSize = CGSizeMake(115*[galleryImagesArray count], 80);
//[decksGallery reloadInputViews];
对不起,代码格式化的方式... n顺便说一句,我使用imageview的标记来引用它们,同时删除... – booleanBoy
你可以把一个断点,并验证您的selectedDeck设置和该代码从数据库中删除套牌正在执行。删除后检查数据库中的新加载是否再次提供相同的图像。 – Ved
不,我存储图像路径在数据库中,并检索它.....实际上图像被删除时,我顺序删除它..我有五个图像...当我开始删除图像与标签5 ...它s被删除....但当我做它随机它不会被删除..当我选择图像wid标签zero..tat第一img..all图像被gettn删除... – booleanBoy