Как удалить UIImageView с ассоциированным тегом и идентификаторами

У меня есть UIImageView, связанный с object_sku. Изображения отображают прокрутку для интерактивного UIButton. Когда я нажимаю, он переходит в центр экрана и отображается как тег 0,1,2,3. Изображение Tag 0 содержит object_sku 123, Tag 1 содержит тест object_sku, Tag 2 содержит object_sku test1. Изображения UIImageView отображаются в порядке следования первого щелчка изображения tag 0 и tag1, tag2. Если я удаляю изображение Tag0, оно получает NSLog тега object_sku (test1). Почему он не получает 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 ответ

Решение

В своей процедуре удаления вы перебираете изображения, чтобы увидеть, какие из них удалить, но затем переходите к использованию. object.object_sku (который, кажется, не имеет никакого отношения к изображению, которое вы нажали). Я бы предположил, что вы собираетесь использовать tag изображения, чтобы узнать, какой базовый объект вы удаляете.

Другие вопросы по тегам