2014-12-10 2 views
0

Я обрабатываю изображения из данных JSON и отображаются в виде таблицы. Мой код для отображения изображений в виде таблицы есть -Изображения загружаются в виде таблицы в симуляторе, но не на устройстве

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *[email protected]"MyCell"; 
OnlineCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidentifier]; 

if (cell == nil) 
{ 
cell = [[OnlineCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellidentifier]; 
} 

cell.userLabel.text = [self.allusername objectAtIndex:indexPath.row]; 
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
imageURL = [self.alluserphoto objectAtIndex:indexPath.row]; 

img = [UIImage imageWithData:[NSData dataWithContentsOfURL: [NSURL URLWithString:imageURL]]]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 


    cell.userIMage.image = img; 
    [indicator stopAnimating]; 
}); 
}); 
return cell; 
} 

Simulator Выход -

enter image description here

устройство вывода -

Пожалуйста, скажите мне, как я мог бы получить изображения в устройстве.

enter image description here

+0

Какой URL-адрес вы используете? Дайте нам пример ... –

+0

@ Jean-BaptisteYunès http://static.vconnect.co/img/profile-photo.jpg .. изображение не получает нагрузку от этого источника в устройстве, но загрузка в симуляторе – ChenSmile

+0

Не загружены ли изображения даже если вы немного подождёте и прокрутите табличное представление? –

ответ

2

Как я могу видеть два снимка экрана - это симулятор, а один - это устройство, которое содержит два изображения. Нагрузка на обоих концевых симуляторах и устройствах. Так что я думаю, что проблема с вашим изображением, полученным с веб-страницы. Поскольку вы правильно кодируете код, если в коде есть проблема, то это не загружает два изображения, а также в устройство.

Прошу протестировать с изменением изображения с первым загруженным изображением со спины. Конец стороны и проверить один раз, который необходимо загрузить. поместите сначала загруженное изображение для всего ответа, а не изображения очков, которые не загружаются в устройство. Я уверен, что проблема не в коде.

-1

Набор изображений по умолчанию, пока вы не получать изображения асинхронно от JSON.

UIImage *img = [UIImage imageNamed:@"default.png"]; 

Когда вы запрашиваете изображение в асинхронно метод означает, что он будет получать в зависимости от размера изображения & скорости интернета. Таким образом, вы просто сохранить изображение по умолчанию, пока не получать полностью с сервера

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"MyCell"; 
    OnlineCell *cell = (OnlineCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    NSArray *nib = nil; 
    if (cell == nil) 
    { 
     nib = [[NSBundle mainBundle] loadNibNamed:@"YourCustomCellNibName" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
    } 
    // Your code 


    cell.userLabel.text = [self.allusername objectAtIndex:indexPath.row]; 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
      //NSData *imagedata = [NSData dataWithContentsOfURL:[NSURL URLWithString:[self.alluserphoto objectAtIndex:indexPath.row]]]; 
      NSURL* url = [NSURL URLWithString:[self.alluserphoto objectAtIndex:indexPath.row]]; 
      NSURLRequest* request = [NSURLRequest requestWithURL:url]; 

      [NSURLConnection sendAsynchronousRequest:request 
               queue:[NSOperationQueue mainQueue] 
            completionHandler:^(NSURLResponse * response, 
                 NSData * data, 
                 NSError * error) { 
             if (!error){ 
              UIImage* image = [[UIImage alloc] initWithData:data]; 
              // do whatever you want with image 
              if (image) { 
               dispatch_async(dispatch_get_main_queue(), ^{ 
                OnlineCell *updateCell = (id)[tableView cellForRowAtIndexPath:indexPath]; 
                if (updateCell) 
                 cell.userIMage.image = image; 
               }); 
              } 
             } 

            }]; 

     }); 
} 
+0

Я пробовал ваш код и ждал, но картинки r не загружаются ... – ChenSmile

+0

Подождите, я предложу еще один вариант – svmrajesh

+0

Попробуйте обновленный код .. – svmrajesh

1

Debugging Suggestion 1: На устройстве, убедитесь, что изображение доступно. Вы можете попробовать открыть изображение в Safari. Если сафари открывает изображение, это означает, что изображение доступно.

Debugging Предложение 2: Если изображение доступно, попробуйте загрузить изображение синхронно и отлаживать, если вы получаете необходимые данные (на устройстве):

NSURL *url = [NSURL URLWithString:self.photoImagePath]; // Is URL valid? 
NSData *imageData = [NSData dataWithContentsOfURL:url]; // Is data nil? 
UIImage *image = [UIImage imageWithData:imageData]; // Is image nil? 

Затем попробуйте загрузить изображение асинхронно, например:

__weak UIImageView *weakImgageView = cell.userIMage; 
imageURL = [self.alluserphoto objectAtIndex:indexPath.row]; 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL: [NSURL URLWithString:imageURL]]]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     weakImgageView.image = image; 
     [indicator stopAnimating]; 
    }); 
}); 

Надеюсь, что это поможет.

+0

сэр, было бы намного проще, если бы u обновил ur рабочий ответ, как мой код. i m получение значений в отладочной и сафари также загружает изображения. – ChenSmile

+0

Путь и изображение не являются ниллом – ChenSmile

+0

См. отредактированный ответ. – Mustafa

0

Изображение по умолчанию не подходит должным образом. Это то, что я подозреваю. Проверьте, правильно ли вы указываете имя или нет. Это может быть проблемой.

+0

имена верны, а url также прав. как он отлично работает в симуляторе – ChenSmile

Смежные вопросы