UITableView появляется частично обрезанным (отключенным) после получения предупреждения памяти и "модальное" представление отклонено - PullRequest
0 голосов
/ 24 августа 2011

У меня есть экран сведений о продукте, который открывается, когда пользователь выбирает один из продуктов, отображаемых в виде таблицы / таблицы продуктов.Я использую CATransition, чтобы сдвинуть представление вверх, а не использовать presentModalViewController.

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

+(void)slideFromView:(UIView*)currentView toView:(UIView*)nextView direction(CCUISlideDirection)direction{

  // get the the underlying UIWindow, or the view containing the current view
  UIView *theWindow = [currentView superview];

  // remove the current view and replace with the next view to display
  [currentView removeFromSuperview];
  [theWindow addSubview:nextView];

  // set up an animation for the transition between the views
  CATransition *animation = [CATransition animation];
  [animation setDuration:0.5];
  [animation setType:kCATransitionPush];
  switch (direction) {
    case CCUISlideLeft:
      [animation setSubtype:kCATransitionFromRight];
      break;
    case CCUISlideRight:
      [animation setSubtype:kCATransitionFromLeft];
      break;
    case CCUISlideUp:
      [animation setSubtype:kCATransitionFromTop];
      break;
    case CCUISlideDown:
      [animation setSubtype:kCATransitionFromBottom];
      break;
    default:
      break;
  }
  [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];   
  [[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
}

Теперь все переходы с измененным видом работают нормально, пока я не получу предупреждение памяти.После того, как я получил предупреждение, а затем отклонил / сдвинул экран с подробностями за пределами экрана, часть таблицы / таблицы продуктов выглядит обрезанной.В частности, около 1/3 правой части стола выглядит белым.См. Ссылку на скриншот ниже:

http://www.dropbox.com/gallery/19636498/1/work?h=4ecde7

Кроме того, вот код делегата для отклонения представления:

-(IBAction)dismiss:(id)sender
{
  MyWishesItemController* controller = (MyWishesItemController*)sender;
  [CCUIHelper slideFromView:controller.currentView toView:self.view direction:CCUISlideDown];
  if ([[_wishListResultsController fetchedObjects] count] > 0) {
    [self showWishList];
  }
  else {
    [self showEmptyList];
  }
}

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

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

1 Ответ

0 голосов
/ 26 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...