如何使用关联标记和ID删除UIImageView

时间:2014-06-23 05:50:15

标签: ios model-view-controller sqlite uiimageview

我有与object_sku相关联的UIImageView。图像显示可点击的UIButton的滚动视图。当我点击它进入屏幕的中心并显示标签0,1,2,3。标签0图像包含object_sku 123,标签1包含object_sku测试,标签2包含object_sku test1。 UIImageView图像以第一个图像点击标记0和标记1,标记2的屏幕顺序显示。如果我删除Tag0图像,它获取标签object_sku(test1)的NSLog。为什么它没有得到Tag0 object_sku。它从屏幕上获取最后一次更新值。怎么解决这个?我必须得到,如果我删除Tag0图像我应该得到object_sku 123.但我没有得到。

屏幕中心的数组:

         mmageView=[[UIImageView alloc]initWithFrame:CGRectMake(100,200,350,199)];


         [mmageView setUserInteractionEnabled:YES];

         //  [mmageView setImage:[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[productimg_array objectAtIndex:[sender tag]-1]]]]];


         [mmageView setImageWithURL:[NSURL URLWithString:[productimg_array objectAtIndex:[sender tag]-1]] placeholderImage:nil options:SDWebImageProgressiveDownload completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {



         }];


         [mmageView setTag:[sender tag]-1];

         NSLog(@"mmageView  Tag: %i",mmageView.tag);


         object = [[ObjectAddedToScreen alloc] init];
         object.productDescription = [descript_array objectAtIndex:[sender tag]-1];
         object.view = mmageView;
         object.productId=[product_id_array objectAtIndex:[sender tag]-1];
         object.object_sku=[sku_array objectAtIndex:[sender tag]-1];


   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
         NSString *documentsDirectory = [paths objectAtIndex:0];


         NSString *path = [documentsDirectory stringByAppendingPathComponent:@"db1.sqlite"];
         NSLog(@"filepath %@",path);


         if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {



           //  const char *sql = [[NSString stringWithFormat:@"SELECT tag FROM product_sku where tag = '%ld'",(long)object.object_imageView.tag] cStringUsingEncoding:NSUTF8StringEncoding];


             const char *sqlInsert = [[NSString stringWithFormat:@"insert into product_sku (sku, tag) values ('%@', '%ld')", object.object_sku, (long)mmageView.tag] cStringUsingEncoding:NSUTF8StringEncoding];




             NSLog(@"sql is %s",sqlInsert);

           // BOOL favExist = false;

             sqlite3_stmt *statement, *addStmt;

             if (sqlite3_prepare_v2(database, sqlInsert, -1, &statement, NULL) == SQLITE_OK) {
                 // We "step" through the results - once for each row.
                 while (sqlite3_step(statement) == SQLITE_ROW) {



                  //   favExist = true;

                     const char *sqlInsert = [[NSString stringWithFormat:@"insert into product_sku (sku, tag) values ('%@', '%ld')", object.object_sku, (long)mmageView.tag] cStringUsingEncoding:NSUTF8StringEncoding];

                     //----

                     NSLog(@"sql insert is %s",sqlInsert);


                     // [catID release];

                     if(sqlite3_prepare_v2(database, sqlInsert, -1, &addStmt, NULL) != SQLITE_OK)
                         NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));

                     NSLog(@"error is %s",sqlite3_errmsg(database));

                     if(SQLITE_DONE != sqlite3_step(addStmt))
                         NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));



                 }
             }





         NSLog(@"mmageView object.object_sku is %@", object.object_sku);

         [self.objectsAddedToScreen addObject:object];

         [self.view addSubview:mmageView];

删除图像:

    int new_delete_tag;

    NSString *sku_delete;



    NSArray *subViewsArray = self.view.subviews;
    CGPoint tapLocation1 = [sender locationInView: self.view];

    for(UIView *v in subViewsArray){
        if([v isKindOfClass:[UIImageView class]])
        {
            UIImageView *imageView = (UIImageView *)v;{
                if (CGRectContainsPoint(imageView.frame, tapLocation1)){

                    [imageView removeFromSuperview];


                    for (object in self.objectsAddedToScreen)


                        if (object.view == sender.view)
                        {
                          //  NSString *productDescription = object.productDescription;

                                        //  txtt.text=productDescription;

                              UIImageView *imageView = object.object_imageView;

                             NSInteger object_sku = sender.view.tag;


                        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
                    NSString *documentsDirectory = [paths objectAtIndex:0];


                    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"db1.sqlite"];
                  //  NSLog(@"filepath %@",path);


                    if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {



                        const char *sql = [[NSString stringWithFormat:@"SELECT sku,tag FROM product_sku where tag = '%d'",object_sku] cStringUsingEncoding:NSUTF8StringEncoding];


                        NSLog(@"sql is %s",sql);

                      //  BOOL favExist = false;

                        sqlite3_stmt *statement, *addStmt;

                        if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
                            // We "step" through the results - once for each row.
                            while (sqlite3_step(statement) == SQLITE_ROW) {


                                sku_delete = [[NSString alloc] initWithUTF8String:
                                                     (const char *) sqlite3_column_text(statement, 0)];

                                 NSLog(@"sku_delete is %@",sku_delete);

                              //  favExist = true;

                                 new_delete_tag = sqlite3_column_int(statement, 1);

                                 NSLog(@"new_delete_tag is %d",new_delete_tag);

                              //  if(new_delete_tag && sku_delete){


                                    sqlite3_stmt *addStmt;

                                    const char *sqlDelete = [[NSString stringWithFormat:@"delete FROM product_sku where sku = '%@' AND tag = '%d'",sku_delete,new_delete_tag] cStringUsingEncoding:NSUTF8StringEncoding];



                                    NSLog(@"sql delete is %s",sqlDelete);

                                    //  NSLog(@"sql delete1 is %s",sqlDelete1);

                                    if(sqlite3_prepare_v2(database, sqlDelete, -1, &addStmt, NULL) != SQLITE_OK)
                                        NSAssert1(0, @"Error while deleting tag from product_sku  . '%s'", sqlite3_errmsg(database));

                                    NSLog(@"%s error finalizing %s", __FUNCTION__, sqlite3_errmsg(database));

                                    if(SQLITE_DONE != sqlite3_step(addStmt))
                                        NSAssert1(0, @"Error while deleting tag from product_sku . '%s'", sqlite3_errmsg(database));


                              //  }



                            }
                        }

                     }

                        }

1 个答案:

答案 0 :(得分:0)

在您的删除例程中,您正在遍历图像以查看要删除的图像,然后继续使用object.object_sku(它似乎与您点击的图像没有任何关系)。我会假设您将使用图像视图的tag来了解您要删除的基础对象。