2013-05-13 6 views
1

У меня есть данные, структурированные как дерево (и показано в UITableView), и я хотел бы показать его так, как это обычно делается с помощью UINavigationController и нажатия дочерних представлений на стек. Проблема в том, что мой UITableView (в приложении для iPad) занимает только 1/6 экрана (есть UINavigationController, который обрабатывает другие полноэкранные экраны iPad в этом приложении, поэтому использование NavigationController для управления уровнем стола - это хороший способ).Leveled UITableView без NavigationController

Есть ли простой способ получить хороший визуальный эффект от изменения уровней TableView без использования NavigationController? Сейчас я просто меняю источник данных и перезагружаю данные, но это делает что-то вроде мерцания на экране (пользователь не может действительно видеть, что структура данных подобна древовидной структуре).

Я думал о создании нескольких TableViews, а затем просто анимировал изменение размера (от полной ширины до 0 TableView, которое мы оставляем, и от 0 до ширины в одно и то же время другого) таблицы, чтобы сделать что-то вроде эффекта segue - но я не уверен, что это хороший подход.

ответ

1

Вы можете использовать reloadSections:withRowAnimation: с UITableViewRowAnimationLeft и UITableViewRowAnimationRight вместо по умолчанию reloadData. Это будет похоже на толкание, которое вы ищете.

Справка: http://developer.apple.com/library/ios/documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/reloadSections:withRowAnimation:

0

Вы можете попробовать этот код (после того, как вы установите правильные значения :))

__block CGRect frame = tableView.frame; 
    [UIView animateWithDuration:0.5 animations:^{ 
      frame.origin.x -=tableView.frame.size.width; 
    } completion:^(BOOL finished) { 
     frame.origin.x = yourViewThatContainsTheTable.frame.size.width 
     tableView.frame = frame; 
     [tableView reloadData]; 
     [UIView animateWithDuration:0.3 animations:^{ 
      frame.origin.x = 0; 
      tableView.frame = frame; 
     }]; 
    }]; 

В принципе, если вы используете подклассы UIView вы можете использовать [UIView animateWith...] методы для выполнения простой анимации или вы можете использовать CAAnimations/CABasicAnimation/CAAnimationGroup/CAKeyframeAnimation для более сложных анимаций в подклассах UIView.

Если вы хотите выполнить индивидуальный переход для UIViewController, вы можете использовать CATransition.

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